Actually, the most important thing you need is to figure out the binary format of .exe files (Unless you are planning to use an existing linker, at which point I think you need to output obj files which also have a binary format).
You also need to deal with a LOT of assembly, unless you are already VERY familiar with the x86 instruction set, I'd try something else.
Here are a few possibilities:
There used to be a thing called "Tiny C"--I'm guessing this is it: http://bellard.org/tcc. Tiny C is a good enough compiler to build itself, but not so complex that it's hard to understand. It's a bare-bones "How-to build a compiler" lesson in a box. Messed with it on the 8088.
Output for an "Embedded" cpu. They tend to have simple assembly languages and very clearly defined executable formats. This would be a good place to start.
Output C-code instead of a binary. This is a cheat for sure, but you can concentrate on your language and not worry too much about the assembly language.
Finally, if you really want to directly creat an .exe, first write an app that produces a "Hello world" exe. Don't bother having it "Compile" anything, just hand edit the code, get it into the exe format and run it--in doing this you will KNOW that you got all your bits lined up and into the right spots, then you can start on a compiler with some confidence.
After this, then creating the language can be done through a lot of the procedures given here--but if you just want to see how it all works, I'd definitely do a few small iterations first, don't worry about what you will run into until you run into it.