Good tools or methods for understanding structure of bootloader?
There are several tools/strategies that might help:


Better tools for making sense of the source code:


cscope is a tool for exploring C code, it's like grep but understands syntax
Call graph generators to draw a picture of the function calling structure
Fenris looks interesting though I haven't tried it

Runtime analysis


Step through interesting sections with a debugger and analyse what's going on
Use gcc's instrumentation features to call a chunk of good on entry/exit of every function. eg. http://ndevilla.free.fr/etrace/

Writing your own mini bootloader


I often find that the best way to understand something is to recreate it myself



Unfortunately, there's no magic recipe which works for everything.