Assembly languages are human-readable versions of machine code. Usually every instruction in an assembly language has a one-to-one correspondence with machine code. The difference is that the instructions are written with mnemonics and comments can be used. It is very easy to use a disassembler to convert machine code to assembly and an assembler to go the other way. One important consideration for ROM hacking is that the new code you write has to fit. For this reason, working with machine code is sometimes easier. Reading disassembled portions of a ROM can help greatly in understanding how the ROM works but requires some time and patience to get used to the style and memory setup of the code.
More non-ROM hacking specific information can be found at Wikipedia's assembly language article.