Mac OS X has been trying to achieve something like this on a per-app basis using Saved Application State, however, that will only retrieve the *last known* state of an app, not some arbitrary one from the past.

I'm not sure of any app which can do that.

The closest that I am aware of would be a macro which could, for example:

* launch a specific set of applications
* open a specific set of URLs in a web browser 
* open a specific set of files in a specific app (or apps)

You could also add optional features such as 

* quit all of your currently-open applications before beginning (or quit specific apps, like your email and twitter client) when you know you are going to work

This is very simple to do in [Keyboard Maestro], which has a free, 30-day demo on the site. 

[Keyboard Maestro]: http://www.keyboardmaestro.com/main/

For example, in the image attached I have created a macro like this as an example. I will use numbers to correspond with the numbers on the image to show what each step is doing:

![enter image description here][1]


1.	This macro (read simply as: "series of actions") will take place either if I choose the menu from the menu bar…
2. 	…or if I use the keyboard shortcut I have specified. (Other actions are also available 
3.	Quit all applications 
4.	Hide the Dock, if it is visible 
5.	Launch BBEdit
6.	Launch Terminal.app
7.	Launch Safari 
8.	Open the URL <https://apple.stackexchange.com/?tab=featured> in Safari.
9.	Open the URL <http://gmail.com> in Chrome
10.	Open a folder in Finder

this is just an example for illustration. I could have told Keyboard Maestro to run any sort of command, or open specific files in other applications.

The only thing which is *not* possible, as far as I am aware in any app, is the ability to say: "Ok, save everything that is on my screen right now and remember it for later."


  [1]: https://i.sstatic.net/dZ2j1.png