With save/load, you don't have to save your entire project's state.
Mostly to reduce the clutter of it's savefile, make a couple families called "No Save OBJECTTYPE" and apply the behavior that prevents saving of that object's data. This way you don't have to record the exact location of all the sprites and static elements, saving the global variables and whatever objects you did not blacklist.
With webstorage, you just save a key to a value, sort of like a perma-dictionary key. You have to design your own events on what to load into where with this, but it's more of a whitelist option, where you choose what to save. The save/load basically uses this, but it's saving/loading code is already programmed into the C2 engine.
In the end they both function the same, data is saved and is kept until webstorage/localstorage is cleared.
So in summary, for saving games:
Save/Load = Blacklist
Webstorage = Whitelist