I do not have a ton of experience with the atmega interrupts but here is what I (like to think that I) know:
Interrupts will activate during a delay. It effectively stops the delay and restarts it when the interrupt routine is done. I think that delaymicroseconds is different and cannot be interrupted. If that is true though then the interrupt would just get called immediately after the delaymicroseconds call returns.
As far as I know there is no ability for nested interrupts. When an interrupt is called the processor preempts the program running and executes the interrupt code. The only time lapse is that of storing where the program was when it was preempted, which is at most a stack push or two and setting a flag of some sort. If an interrupt event occurs when there is already an interrupt being handled, the handler probably does not even notice until normal execution resumes. That is just a guess. I know that there is no facility for nested interrupts. I would bet that they are atomic operations.
I would be careful about dumping a lot to the serial port inside an interrupt routine. For one, serial communication might be disabled. More importantly, because there is no facility for nested interrupts, interrupt routines should be short and sweet. Something like setting a variable which then could be read by the normal execution loop.
Psuedo code:
byte int_called = 0;
void interrupt_handler(void){
int_called = 1;
}
void setup(){
interrupt_attach(....);
}
void loop(){
if (int_called){
int_called=0;
Serial.print_all_vars();
}
}