As known in since C++11 there are 6 memory orders, and in documentation written about std::memory_order_acquire:
Just to answer your headline question: yes, any loads (whether atomic or non-atomic) can be re-ordered after an atomic load. Similarly any stores can be re-ordered before an atomic store.
However, an atomic store is not necessarily allowed to be re-ordered after an atomic load or vice verse (atomic load re-ordered before atomic store).
See Herb Sutter's talk around 44:00.