it gives the connection time to establish, sync, handshake, whatever it has to do.
Yes. When the "Serial" connection works directly over USB, there is a relatively complex startup sequence where the computer goes "hey, you're a new device! Tell me about yourself", and the Arduino responds "well, I'm an Adafruit Feather xxx and I implement a Serial port" and some other stuff. depending on how busy the computer is, this can take a couple of seconds. Before that, the Serial port doesn't exist on the Arduino side.
The usual "while (!Serial);" loop waits for all of this to complete, so that data sent by the sketch doesn't just disappear. I don't know for sure that I agree with this behavior - after all if you have a real serial port that isn't connected to a computer, the data disappears. But that's the way the first people who implemented native USB ports did things, and everyone else has followed along.
(which is probably better than different boards behaving differently.)