it would be netcat, not netcat.exe, although changing the name wouldn't harm anything, or you could make sure that the Makefile created it as netcat.exe.
I don't quite understand that sentence, but there is at least one interpretation of it that is very wrong. Linux executables are not the same as Windows executables, no matter what the extension is (with or without .exe). Linux uses ELF format (in the Unix/BSD tradition), while Windows uses PE format. These are completely different formats and unless you run under an emulation layer (like Wine in Linux, or Cygwin in Windows), there is no way to run one format in the other OS, AFAIK. Changing the extension does not do anything.
MinGW cross compiler under linux
The main problem really is to find a way to tell GCC to generate Windows code. And by Windows code, I really mean two things: it needs to use Windows libraries; and it needs to be packaged in PE format (.dll, .exe, etc.). The executable code itself is just dependent on the processor not the OS. I have very limited experience with setting up a cross-compilation environment. I just know that it's common for embedded systems and things like that where you can't really compile stuff on the target platform (it's too small), but in general, those are still Linux-to-Linux cross-compilations, just with a target different architecture and linking with specific libraries.
I would imagine that cross-compiling anything serious for Windows but under Linux …