Well,
personally, I started off by making a gameboy emulator... not that that's a necessary step by any means.
But that's a big reason why I know about how the gameboy works.
If you want to learn this stuff, first thing's first:
Download BGB and never look back. Start by making some cheat codes - or in other words, find RAM addresses and figure out what they do. In fact, this is often the first step to an ASM hack - find a RAM address related to the ASM in question - but we're getting ahead of ourselves
To make a cheat code you use bgb's cheat searcher. Say you want to find the address for the number of coins wario has. To do this, you first start a search. Then you'd pick up a coin, and do a "greater than" search. Spend some coins, and do a "less than" search. Also do a few "equals" searches between any 2 points in time where your number of coins are the same. Eventually it will give you the address, and you can modify the value of the address to see whether it worked.
And while you're doing this, learn about how the gameboy's RAM is structured. If you don't know hexadecimal, learn it.
The
Pandocs are an excellent resource for gameboy hacking, it basically documents everything except the ASM language, which is documented elsewhere. But they might not make much sense to you until you have your foot in the door, so to speak.
Haven't had a chance to go through the request list yet. I did look at the object sets list, and I guess it could be useful as a reference, but maybe it would have been better to document the enemy sets instead? Since object sets can easily be changed to use different enemy sets? Well, not a big deal