Hi,
There are several ways of doing it.
One way is to actually use a hardware interrupt, another way is to simply poll the input periodically as you go thru the loop. Yet another way is to move away from the loop structure and use a state machine aproach instead. Instead of using PAUSE, which "blocks" the processor, you can use hardware timers, either with interrupts or by simply polling the interrupt flag. It really depends on what you want to do and how fast you need to do it.

If all you want to do is blink the LED untill an input goes high (or low) then you basically had it in the first example you posted. The drawback there is that the input is only checked once per iteration thru the loop so if the PAUSE is long there will be a long "reaction time".

As you see there's not a single answer to your question, it all depends....