NOP stands for
No
Operation. It does nothing. Zilch. Nodda. All it does is take up one (maybe more, not entirely sure...) CPU cycle. This is good for a couple of things.
A) When you hijack and address, you will generally overwrite a whole command, then just a part of the next command. For instance, if the code you hijack looks like this:
Originally posted by codeLDA #$03
STA $1234
That is 5 bytes. A JSL only takes up four bytes, so if you RTL right back to here, it will try to execute whatever opcode 12 corresponds to (Happens to be the ORA opcode) and will destroy your ROM. In order to fix this, instead of just JSLing, you should JSL, then write a NOP right after the JSL, getting rid of the byte 12.
B) I'm a little hazy on this, but I've heard that some things take a few cycles to do, for instance a particular randomized number routine. It sends the number to be randomized, but it takes a few cycles to return the number into the accumulator, so if you try to just store the value right away, you won't get the correct value, therefore you have to have the computer wait a few cycles by inserting a few NOP commands.