I'll answer 2 first: Either. Both. The first compiler was written in assembler, and then re-written in the language and recompiled. It's normal to write a cross compiler (one that works on machine X by creates an executable for machine Y) and then compile the compiler with it to produce a compiler that runs on Y and produces code for Y.
Nobody (or almost nobody) uses low level languages to produce major software components: it takes too much time and is generally harder to maintain than the high level equivalent.
For the other two, you are confusing entities: While you can (do some do) "write" processors in a language that is executed on the "real" hardware (it's called
Microcode[
^]) it's not something you should think about too much unless you are planning on working for a big processor manufacturer - you can't write programs in the microcode and execute them yourself.
The CPU is compiler and language ignorant: it has no idea what language or compiler was used - it just processes a stream of binary data as machine instructions: in the same way they you "process words" without really caring if they come form a book, or a magazine, or a screen. Or even from a radio!
Trying to consider the processor in isolation and expecting it to be "the most important" is like trying to consider your brain in isolation - it doesn't work without your heart, and your lungs, and your liver, and blood, and bone, and skin, and eyes, and ears, and ...
The CPU is the same: without RAM, and a PSU, and input and output devices it can;t do anything either. So stop trying to "compartmentalise" the components and consider them as a system which works as a whole, together with the Operating system.