First of all internet is full of resources covering this topic, I can point you at one of the most basic one I started from while developing my emulators: http://fms.komkon.org/EMUL8/HOWTO.html
If you want something more compreensive of many hardwares (and you will) check this out: http://www.zophar.net/
Writing an emulator is quite a complex story, you have to recreate perfectly the hardware on which programs are running otherwise it won't work! I would suggest to start from a simple hw like a GameBoy (that has a modified Z80 cpu, one of the simpler and most funny to implement. I suggest www.z80.info about this topic).. you shouldn't try with complex hardwares because you have to care about too many things.
Of course the best language is plain C or C++, just because it sticks more with hardware and it's very efficient.. mind that you need to write a virtual machine that behave exactly as the real one.