I'm sorry, but what are you even asking? What program is used to make NES romhacks, or what program is used to play them? Your question is very unclear.
For emulating a lot of the games, fceux is usually a good choice, in terms of compatibility. However,
fceumm seems to be a better choice for more obscure mappers.
As for romhacking, it's not really just a thing you do with one specific program, as there are many different tools and documentations for games available on the internet. Romhacking.net is a valuable source for tools and advice. The only thing I can really specifically guide you on is graphics editing, and for that, I typically use yychr, but there are other programs available such as tlp or tile molestor.