King_bob:
Will the loop pause in its foot steps while the interrupt function is run? Is there a separate thread or something?
[......]
Or is it possible that interruptFunction() is for example called after a and b were set to 0 but c and d had not been set yet, so I would loose the c and d values set in the interruptFunction? If this is the case, how would I go about fixing the issue (preferably without another 4 variables, as I am already pinching bytes)?
Now that we have had all the theory let's see about an answer to the question ... 
When an interrupt is triggered the code that is being implemented stops where it is and implementation switches to the code in the ISR. When the ISR completes the code takes up where it left off as though there had been no interruption. It is important to ensure that the time spent in an ISR is as short as possible - 100µsecs would be a long time.
There is no means to predict when an interrupt will happen (if you could predict it then you not need an interrupt) so, yes, i could happen in the middle of a sequence of lines of code that reset the values of variables. If it is essential to perform a few actions together without them being interrupted then you can pause interrupts like this
noInterrupts():
a = 0;
b = 0;
c = 0;
d = 0;
interrupts();
It is often useful to make working copies of variables that get updated in an ISR to ensure that the same values can be used in a succession of calculations and that can be done in the same way
noInterrupts():
copyA = a;
copyB = b;
copyC = c;
copyD = d;
interrupts();
If the interrupts do not happen too frequently and if the data from the sensor does not change between interrupts then a simpler way can be to use the ISR to set a flag variable to tell the main program that an interrupt has happened. Then the main program can get the data from the sensor and reset the flag when it has done so - something like
void interruptFunction() {
newData = true;
}
and in loop()
if (newData == true) {
// code to get data from sensor
newData = false;
}
...R
PS ... there is nothing in principle wrong with calling a function from an ISR. However it would be A VERY BAD IDEA to call a function from an ISR that could also be called from the main code (unless you are a very clever programmer) because the main code may have called the function when the interrupt happens - like two people trying to drink from the same glass of beer without spilling it.