It means that all iterators and references obtained prior to the call to push_back
can still be used after:
std::list<int> numbers { 2, 3, 5, 7};
auto it = numbers.begin();
int& r = numbers.front();
numbers.push_back(11);
std::cout << *it << '\n'; // guaranteed to print 2
std::cout << r << '\n'; // guaranteed to print 2
Other data structures do not necessarily offers such guarantees. If you use a vector instead of a list, each call to push_back
might invalidate all the iterators and references obtained prior to the call, because the capacity might be exhausted, and in that case, the data has to be moved into a bigger array. Using an invalid iterator or reference results in undefined behavior (read: anything can happen).