Okay, here we go into some debatable territory. Here's what I know as well as a bit of opinion.
1> "C is a middle level language" Well, that's one way of looking at it. It is actually only higher than assembler and machine code itself, which really isn't as "middle" today as it once was, though most authorities place it as a third generation language. Third generation is exactly middle. The issue that I raise is simply that the C language exists with few keywords, including those that most forget actually manipulate the registers in the processor directly. And the asm keyword that allows the compiler to send in an assembler to create inlined assembler routines. That doesn't sound all that middle. And the contradiction to that is the extensible and ANSI standard routines that we all use from the C language's libraries everyday. Those make it feel more like a higher level language, IMHO. Short answer to the last part: YES. Any difference in two compilers isn't really a surprise if you look at the intricacies of compiler construction. Take a look at this to see what I'm talking about in excruciating detail: http://www.etek.chalmers.se/~e8johan/compiler/
2> Compilers or assemblers that can be created to run on other pre-existing platforms are essential to create a new operating system. In the case of Unix and Linux, a good deal was done in C. Only a few things like a boot loader and some low level file system services used assembler, I believe. I'm not at all certain that one couldn't write an OS using only C, if allowed to use the inline assembler command freely. Any language's compiler fits with a platform by being capable of processing source code into native binary that can be linked to any needed internal (platform specific) header information that the OS will use to load the program into memory, begin its execution and regain control when it exits.
3> As stated very briefly above, compilers and attendant utilities such as linkers, are written like any other software to fit the OS and hardware to some extent. The OS is the piece of software that will operate in conjunction with the BIOS (another program in the guise of firmware!) to initialize all hardware and create standard ways for all peripherial hardware to communicate with programs using the OS's services as an interpreter if needed. That's just what an OS is there for to begin with, not to make the desktop look pretty. Some of the earliest OSes were really, *REALLY* ugly, I promise.
4> Yes, and legally for free. A bunch of them can be found at:
5> I believe I already gave you one URL for this... but, it is a process of writing a piece of software that reads one file, looks for known landmarks in it (known as a parser, incidentally!), replaces certain things with known structures in another file and keeps track of all of it as it writes out the new object file.
6> Snooping around at http://www.thefreecountry.com
will likely yield several good freeware libraries for C. Also, should you use the Dev-C++ IDE with the MinGW compiler (it handles C also, as do most C++ compilers), it has a live update tool that allows you to download libraries for it and install them from inside the IDE(Integrated Development Environment). You may want to check out the Allegro libraries and their various additions.
Good luck and Good programming!