State variables and millis help.

The "later timestamp" is currentMillis in the BlinkWithoutDelay example but I never understood the logic of having a variable called currentMillis because as soon as it's assigned a value it's no longer current! (a bit of an oxymoron I think)

It actually stays current for quite a few iterations of loop(), if loop() isn't doing a whole lot (and there is no blocking code). At 16MHz, quite a few instructions are executed in the 1024 microseconds between changes to the value that millis() returns.