Glad you liked it :) Yeah, that is correct. The state of each rewindable object is saved with a timestamp. When the rewind happens, the appropriate state is set for the current time. That also means that it doesn't have to rewind back all the way to 0, it could instead stop somewhere in the middle and all the logic is able to continue from there.
On the first prototype for this, we actually had the rewind as a skill for the player. You were able to rewind by just a little bit as well. The ability was cool, but designing puzzles around it in a bullet hell scenario was tricky. Hitting the objects to activate the different time effects worked way better for us.