For instance, let's use editing a trainer.
Say you wanna edit Ace Trainer Joel (Disregard the name, this is an example.)
You'd naturally wanna search for Joel. So long as Joel only appears in the ROM once, you shouldn't have any problem finding him at all... though that wont always be the case.
From there all you really need to do to start learning is fiddle around with the bytes that come after his name.
You can change the Pokemon he has, his class (Ace Trainer and the like), whether or not he is a double battle, etc. etc.
Remember to make a backup before all this, if you screw something up, you might not remember everything you did... good to be careful eh?
After making the changes, open the ROM up in your Emulator and check what you did.
You could just as easily open it up in a tool to see if you wanna see EXACTLY what you did, cause the trainer's data would be different in the tool too.
Changing sprites can be done that way too, but you'll need to make sure to have the offset of a trainer image handy, or you wont have anything to change it to.
This is the same basic way you can change about anything in a ROM...
When I first started my Hex Editing learning, I started with item hacking.
Since I don't have a hex editor that supports table files, (You'll wanna learn about those too, google is your friend) I had to search for a bunch of random numbers, it's possible to edit it that way, but it's easier to use a table...