I didn't know I wanted this until now, and now I really want it. I often open a ton of related applications, and then avoid restarting my computer because it's incovenient to reopen everything.
I'm on Linux, so I won't be able to use your app, but great idea and good luck!
I think taking this sort of context snapshot may be very difficult. If you assume no direct application integration. It would almost be like you would need a mechanism to operate in a partition of RAM where it could not interact with the current running context but stream all of the RAM in use to disk.
Also it'd would be a data integrity nightmare because if one context shared the apps from another. How would you manage memory corruption, and allocation and saving in this sort of scenario.
You can explore running everything in a Linux Container, LXD. Then freeze the LXD if you wish to shutdown, and unfreeze when you're ready to restart, it's how container workloads can be moved from one system to another.
I'm on Linux, so I won't be able to use your app, but great idea and good luck!