I don't worry about the state personally. I know that X10 will be out of sync, so I just send the command even if HG thinks the module is already there. For example, I have most of my modules controlling exterior lighting. I use the scheduler to turn all lights off at dawn and at 1030PM even if they might be off to begin with. I also have some turn on in the morning and off at dawn. If I turn them on/off locally, HG won't know that. However, there is no down side to turning off a light that's already off.
In your case, you are trying to use HG for power usage. This is more complicated when you can't poll for the state. I have a power meter reader that I have partially incorporated into HG that reads actual power usage. I can't say how much each module uses, but I'm not really worried about that since lights don't use that much energy compared to a furnace, heat pump, water heater, etc.
As for startup synchronization, there are a couple commands in C# (and probably other languages) that allow you to launch on startup, shutdown, etc. If you wanted to run a set of commands to resync, that would be a good way. As I said, I don't personally worry about it, but if it was an attic fan, pool pump, sump pump, or something critical, I would certainly do something. Then again, I probably wouldn't use this type of a setup for something that could fail in an unsafe manner.