I have a basic doubt that, How can we have both CLR's on a same machine. If this is possible, When I refer few dll's of 4.0 and setting application pool to 2.0 why Cant I run the website(I am getting errors).When we refer the dll's from web.config it means it searches for GAC when that particular 4.0 dll is available in GAC Why dont it load (How come it is not loading).. Please clarify my doubts
Application pools are set to run a specific version of the framework. It uses this information to determine which assembly to load from GAC.
You can't load a .NET 4 assembly from a 2.0 application/process.
You can have 1.0, 1.1, 2, 3, 3.5 and 4 all installed side-by-side.
Yes, both CLRs can be on the same machine - in fact, .NET 4 allows you to have the same process hosting both CLRs at the same time!
Different assemblies in the GAC will have different versions, so if your references specify the version, the CLR will load the appropriate one. Of course, you need to make sure you've got the appropriate CLR loading the appropriate assembly; while the v4 CLR can load v2 assemblies (with some restrictions, IIRC), you shouldn't try to load a v4 assembly from the v2 CLR.
As for why you're having problems - that's really impossible to say without more information. (Any time you ask a question and you have an error, say what that error is.)