For 1, 3, and 6. First, C# is a language, it doesn't define the platform. You can expect to use C# for WinForms type applications and ASP.NET applications. Basically, this defines the User Interface. Web and client apps vary significantly in how they process user interactions. However, the inner workings of C#, the processing layer, should be the same. Which leads to 5.
I'd say the most important thing you should know, beyond the fundamentals, OOP concepts, etc, is database interaction. In any but the most minor enterprise applications a database will come into play. Understanding how ADO.NET handles this is required. DataSets are one of the most useful of Microsoft's design patterns. Don't try to reinvent the wheel, understand the data access layer of .NET.
As to annoying VB.NET programmers, I'd say the reverse is more common.

VB.NET has a quirky syntax, being the bastard child of classic VB and the .NET framework. Neither were really meant to be together and the transition from one to the other is so kludgy that VB.NET should have a completely different name. I will mock VB.NET programmers, but only because they pretty much asked for it.