The IRQ reads 2 pins and makes it into 2 bits in one byte.
Copy that byte.
Next time the IRQ runs you have the copy and the new byte.
XOR is the ^ operator. Look it up.
0 ^ 0 is 0
0 ^ 1 is 1
1 ^ 0 is 1
1 ^ 1 is 0
XOR returns TRUE when the bits are different.
^ is a bitwise operator.
byteResult = byteA ^ byteB;
compares all the bits in byteA with byteB, bit 0 to bit 0, 1 to 1, 2, to 2, ...7 to 7 and puts the result in byteResult.
byteResult ends up with bits set that are different in byteA and byteB.
If you don't understand bits and bit logic then that is what you should look up and learn, not blow off and avoid. Otherwise how do you expect to get anywhere with code?