I haven't written an actual emulator, but I'm making an NSF player and I've followed the scene since around the beginning. (1997 or so)
1. I found a newsgroup called alt.binaries.emulators.nintendo and was fascinated to see my favorite NES games as binary postings. Not too long after, NESticle came out and I was running them (slowly) on my 386 IBM PS/1.
2. I only know assembly language. I think general programming effeciency would likely have more influence than the language used. (Unless HLLs are really that bad, heheh)
3. Only 2 years ago, lack of accurate, verified information would've been a serious problem. The hardest part from my point of view would seem to be supporting the multitude of various memory mappers. Then there's the rather 'interesting' way the PPU draws the screen. Very timing-dependant. Because of that, there's probably at least one game for even the best emulators that don't display properly.
4. I wouldn't know. I imagine someone designing an NES emu has to strike a balance between effeciency and accuracy.
5. I'm not sure I understand this question. An NES running at full capacity (probably a misleading term to use) would have no wasted resources. If you mean emulated on a machine clocked by equivalent crystals, I'd say no. When software can operate more effeciently than hardware, well, it'd probably be on one of those legendary quantum computers. :)