It looks like Visual Studio is still using the new compiler even when you target an older version of the framework.
For example:
static string Test(int i) { return i.ToString(); }
...
Enumerable.Range(1, 10).Select(Test)....
In VS2008, this gives a compiler error:
The type arguments for method ... cannot be inferred from the usage. Try specifying the type arguments explicitly.
In VS2010 targeting v3.5, this compiles and works.
This isn't an issue for most code, but it could cause problems anything that relies on run-time compilation - eg: ASP.NET sites.