While loop not behaving as expected

srinathdevelopment:
Never have more than a couple of lines of code in any interrupt handler because another interrupt can always interrupt your interrupt handler ...

No it can't. Interrupt handlers turn interrupts off. Otherwise that would happen. For example, the timer interrupts that increments millis() might happen to be interrupted by incoming serial data.

However you are right that interrupt handlers should be short, because the next interrupt is now pending until the first one is finished. If it is pending too long subsequent ones may be missed (eg. incoming serial bytes).

Why does a while loop disable the trigering of ISR's?

It doesn't. However you are calling a function from an ISR, and as I said above, interrupts are disabled inside ISRs.

Serial comms on version 1.0 of the IDE is (are?) done by an interrupt handler, and these are disabled during your while loop (purely because it is called from an interrupt handler).