probably just to give a bit of delay between notes
So delay between the start of the tone() functions rather than between notes?
Yes, that is a better way to put it.
What is the disadvantage of the new note (or tone) immediately replacing the old?
The old note would not be heard then.
Also, increasing the tone() milliseconds does not seem to make the notes change more slowly, which makes sense if the duration of the notes is limited by the time to execute the rest of the code in loop, no?
Correct, therefore both the ms given in the call to tone() and the delay() have to be increased. Once tone() is started, it continues for the specified duration, and the rest of the code can continue and do other things. After the specified duration, the tone is turned off via an interrupt. But if tone is called again before the duration has ended, the new tone will replace the old at that time.