Session is something that every page in your website/application can access. You can use Session to pass information from one page to another page in your application.
ViewState contains the "state" information for each control on the page. This is how controls are able to "remember" what state they are in between page postbacks to the server. For example if you have a checkbox on the page that is initially unchecked and the user places a check mark into the checkbox...then hits the submit button...the checkbox will remain checked because the checked "state" of the checkbox is kept in the ViewState between posts to the server. ViewState is more complex than this and I suggest you use the
MSDN library to research this topic more (this is the first MSDN article I found on the topic:
Understanding ASP.NET ViewState)
You should probably refer to the MSDN library for all of these topics. It is a great resource containing documentation for .NET controls, classes, etc. I recommend that you book mark it and use it as your primary resource when developing anything in .NET