If you want a compact tutorial, why not consider Wirth's Compiler Construction (pdf). The source language (Oberon-0) is simple enough to keep the compiler comprehensible. The implementation language (Oberon) should be readable to anyone who has done some programming.
As to which language to use to implement the compiler. Use something you are familiar with. When in doubt, choose a language that will not unnecessarily complicate the attempt: Something with garbage collection. Something that makes it easy to print or otherwise dump internal data structures for inspection. Python, Scheme and Lua all come to mind.
The final consideration is what to target with your compiler. The virtual machines JVM and CLR have been metioned, I'm sure. You could go that route. It might be easier, for a first attempt to use a simulator for a stripped-down RISC processor as your target. (Wirth's compiler book does this.)
I wouldn't recommend targeting x86 for your first compiler as it's hideous beyond words. I also wouldn't target a high(er) level language like C because you'll miss out on a lot of the interesting details, like how to implement short-circuit semantics for boolean operators and such like.