1 is supported by both VB and C#. When you prefix an immediate window query with ?, you are saying "please evaluate an expression". In the abscence of a ?, anything you will type will be evaluated as a statement. This makes a big difference in the following two lines
? a = b
a = b
The first one is a comparison operation and the second one is an assignment.
As for the second issue. Yes, this is an unfortunate experience for the current version of VS. The next version of VS fixes this problem (and several others in the debugging space).
There is a work around for VS2008 (and likely VS2005) that will allow you to work around the problem. You can add a custom DebuggerDisplay for GUID that invokes .ToString on the object. I wrote up a blog post awhile back on how to achieve this
http://blogs.msdn.com/jaredpar/archive/2007/09/28/customzing-displays-in-the-debugger-for-system-types.aspx