Sorry, I have only answers for the first 3 questions...
A console application is that which is executed in a MS-DOS (Win 9x) or "Command Prompt" (Win XP-Vista) window. These applications are not very user-friendly. Usually you have to type the name of the program with some parameters. A simple example is C# compiler: you type csc.exe and some parameters, like the source file, the assemblies, and so... Before Win 9x there used to be some console applications that looked somehow today's windows applications: you had menus and mouse, but they were executed in MS-DOS in a single window - you could not execute another application at the same time. Technically the difference between a console application and a windows application is the way it's programmed. In a console application you have an entry point (in C++ is main() ) and you have to handle the parameters by parsing them. And of course, you don't have the windows-style dialogs (you still can have dialogs, but they are inside the console window). In a windows application you have also an entry point, but it's different, (in C++ is winmain() ), you create here the main window, and you have a function that handles messages (the commands sent by menus, toolbars, buttons...) So in conclusion, console applications in the past time were the only kind of applications for MS-DOS. Currently they are used for tasks that don't requiere user interaction (basically tasks that can be done without a Graphic Interface)
Now, in C#, I'd learn first a console application just to get started.
This is a simple console app to say hello:
class test //File test.cs
{
public static void Main()
{
System.Console.WriteLine("Hello");
}
}
You compile it with another console app: csc.exe test.cs
When you have learned the basics of the language you are ready to do a windows app -This is a windows app:
class test //File testw.cs
{
public class MainForm : System.Windows.Forms.Form
{
public MainForm()
{
this.Text = "Hello";
this.ShowDialog();
}
}
public static void Main()
{
new MainForm();
}
}
Compiled with: csc /r:System.Windows.Forms.dll,System.dll testw.cs
Note: System.Windows.Forms.Form handles the basic messages, like closing the window, but if you add a menu, you would have to add command handlers, which are basically functions.
Finally, yes, C# is good for making non video game programs.
About XNA & 3D games I don't know