Romhackers use many tools, but the most important is the hex editor. With a hex editor, a romhacker can change many parts of a rom, including the graphics (allthough there are better programs for graphical hacking), text (which is usually acquainted with a table file), levels and other data. There are tools that are game specific and can speed up the process dramatically, such as level editors.
A much more advanced aspect of Romhacking is ASM hacking, in which the Romhacker will "decompile" the rom code using a disassembeler, then alter it, and "compile" it again using an assembeler. Things that can be altered using this method are aspects of the games engine, and other things that would be insanely difficult to change when compiled.
Dahrkdiaz is probably the best Romhacker to date.