From what I've heard, only the first game (Red/Blue/Yellow) was a mess. The others are actually a lot easier to hack apparently.
Indeed, from what I've seen of Crystal, it's quite easy to work with.
I'm somewhat of a new Pokemon hacker myself, having started in November, so here's my advice: Don't actually work on a hack yet. Work with the game, and document your findings. List offsets, and use a hex editor's compare functions to figure out how all the tools work. I've been at this since November and haven't created even a simple hack yet, because there's still tons of stuff to find.
I initially messed around with text using a premade table file. Then I made my own table file. Then I found wild Pokemon data tables (format level-species in hex, FYI), and now I have a big file of stuff that includes maps, text, music composition (thx Tauwasser), battle data, stats, techniques, RAM addresses, and more. It even has some ASM in there (which I feel is quite an accomplishment, seeing as it's nigh impossible to find gbz80 info nowadays
).
Another thing is to look everywhere on the net for information regarding the game. I've read through a huge number of threads at RHDN, all the Acmlm archives, and Pokecommunity, and there's tons of stuff still to find. It's too bad that most old hacking boards aren't still around (and have all broken links in the Web Archive). It also helps to understand the hardware of the game you're working with, also -- the pandocs at nocash.emubase.de really helped me understand how the GBC works.
Oh, and ask questions when you get stumped. It's something I've never really done, but it can't hurt.