In your interrupt program, the following events occur when an IRQ-signal (interrupt request) is placed to the MCU via DPin-2 (INT0):
1. Having finished all the necessary initialization tasks in the setup function, the MCU enters into loop() function, and it is looping/waiting to receive an IRQ-signal. The loop() function could be taken as the Main Line Program (MLP) which the MCU is executing though there is nothing to execute except waiting.
2. When IRQ-signal arrives, the MCU enters into ISR, finishes the ISR, and then resumes the MLP from the label where it was interrupted. Let us assume that the loop() function contains the following instructions:
ML1: digitalWrite(13, HIGH);
ML2: delay(1000);
ML3: digitalwrite(13, LOW);
ML4: delay(1000);
Let us assume that the IRQ-signal arrived when the MCU was just executing instruction at label ML3. After finishing the ISR, the MCU will resume MLP execution from label ML4. This is the picture from high level point of view; the actual low level picture is a little bit different.
3. If you want that the MCU should resume MLP execution from top of loop() function (at label ML1), you have to manipulate the stack space to force the MCU to take ML1 as the return address rather than ML4. Manipulation of stack is easy when programming in assembly; but, I have no idea how difficlt it would be in high level environment.