That is the post I was referring to.
Not sure I'll do much better but here I go...
Let's say there are three things that have to happen in a specific order to send a byte of data. To initiate a transmission you must create a start condition. You do so and set the state variable to step 2 because step one has been completed (set the variable with an integer, string, etc., your choice, just something to remember where you've been). later in your interrupt routine you check the variable and it's set for step 2. For step two you need to send the data. The data is sent and the state variable is set to step 3. When you re-enter the interrupt you look and see you're at step three, the final step. Now to finish the transmission you need to create a stop condition. The stop condition occurs and the state variable is cleared for the next use.
The variable maintains state, where you are in a routine/function/loop/switch. It's like a bookmark. If you can only read for a specific time per sitting but need to remember where you were, you flag your spot/state. When you sit back down to read again you can proceed right where you left off without forgetting whether you needed to read a page, flip the page or close the book.
I can only hope I didn't make things worse.