First of all, please start a new thread for a new topic. Makes things easier to manage. Secondly, please post a new post for a new question and don't alter the existing ones. Updating a post doesn't trigger e-mail notifications and as such may go unnoticed.
That said, any class that s Serializable (has the Serializable attribute applied) can be stored in ViewState. However, the fact you could doesn't mean you should. In general, only store tiny bits of information in ViewState such as numbers, short strings etc. The .NET controls store stuff like the current page Index and other state data, but *can* also store the actual data, which is typically a bad idea because of the site.
ViewState is not stored at the server. When a page posts back, it's used to prepopulate the page with existing values and state.
>> In case of class a : b and class c : a can I access property of class b in c?
Why don't you try it out? The best way to discover things like this.
The extended answer is: it depends on the visibility / access scope of the property. Public and protected properties can be seen; private ones can't.