Thank you so much, I was hoping to be able to reply first, (this sh*t is my crack)
Ok, First off, the kernel is the basic system that controls how the cpu reacts, as well as how programs interact with the hardware on your phone, such as the screen, wifi and bluetooth modules, accelerometer, gps, ambient light and the battery. When a dev wants to overclock their android, add a module for EXT, or TUN, or add wifi support, this is where the magic happens. this is probably the most important part of the firmware. It also controls battery life via voltage, as well as cpu speed.( the average droid can be overclocked to 1200-ish, depending on the randomness of processors, though I've heard of a ridiculous version called OMAP Ti39 or something that could be stable at 2ghz, even 2.3. As I think you may know, Fat32 doesn't support file transfers of more than about 4 gigs at a time, which is why add in ext support is so important, especially since someone made a video player that reads matroska video files (blu-ray) Ive tried it, its beautiful, (V player - on the market) after kernels is framework, the framework is what renders the gui, basically everything that you see on the screen is thanks to the framework-res. We edit it either manually, or through the use of an app called metamorph, which swaps the xml files the framework uses with edited ones, such as one I recently used to give my droid a circular battery, however these xml files can change anything you could need them to visually about your droid, you just have to find what you need. Now on to shell. shell is the engine that is accesible through command prompt and terminal using the android sdk and adb, more on that can be found easily on the google android homepage. however, much use is made through devs and an app called terminal emulator that is basically a straight to shell terminal screen app. Uses for shell may include but are basically limitless, include moving any app to your sd-card to conserve rom (rom is the phones total system memory, apps usually go in there, but before froyo, and ext partition could be used, and with froyo stock support for most apps was allotted, and without the need of an ext partition.) Ram is basically ram, if you use a rom that originally came with a larger ram supported device, something called a swap partition must be implemented, otherwise it won't boot, there is an app or two that will do that for you, manual swap creation is also possible. Swap basically creates virtual ram on the sd-card. Root access, which can be acheived manually through the recovery flashing of specific zip files, or via free apps that do it with one click, basically allows you to flash kernels, change the framework, or allow tethering which I will cover next, is possible because the kernel the phone uses is linux, the unlocking of which is called granting super user access, in ubuntu a linux distribution, typing su, and your admin password will give you access to your computers system files, much in the same way we apply it to android. (However, it is unlikely you would try to flash an alternate kernel to your desktop, as it runs on either ie36 or x64 architecture, whereas phones run altogether seperate architectures , for instance android runs on ARM, and that is the base and primary reason your phone won't run windows.) Since android is free (open-source) there is an x86 version of android, including a froyo port that you can use on laptops and desktops. (Really quickly I would like to interject that recovery is an option on all phones android based that is usually accessible by holding volume up while booting, however the droid requires you press x while booting to get to recovery, which btw is what you flash a custom version of after rooting that allows you to flash roms and kernels. It also allows for backing up all of your phones firmware and data in the event of a problem. Basically its your new best friend, get familiar.) Also there is another form of booting called bootloader, it allows you to flash specific system files that are normally untouched, a guide to using that and a program called rsd lite will help you if you've bricked your phone ( Bricked- term used to describe the state of a phone that is unable to be recovered to an earlier condition and is essentially a brick or "expensive paperweight".) by allowing you to flash a completely untouched sbf (firmware) file. note that you can also use it to change your boring m boot logo with any image that fits 480x182 bytes through a slightly difficult, but fun proccess, a guide to which ,can be found here at xda, including a file that allows for the flashing of just the logo, whereas previously you had to reactivate your phone (you just have to follow the instructions on the phone) reroot, and restore the rom you previously backed up. Now on to tethering, the most important feature available to root users, which, if carriers have anything to do with it, would normally cost an extra 10 dollars a month. (Tethering- using shell or an app with the proper kernel to allow the use of your phones mobile network via usb connection, or the creation of a wifi hotspot with your desktop or laptop.) However thanks to devs who believe that what you pay for should be used how you want, most roms will tether, even in the settings, without carriers any the wiser. Windows 7 and almost all linux will automatically tether, vista is the most difficult, and xp has a quick install init file that works like a charm. The only reason we root is because we believe in the freedom to change our phones to fit us personally, and lets face it, because we can, because its fun, because its not illegal, and it brings a sense of satisfaction and pride in pushing the limits of technology. (P.S. I tried not to take to long so I couldn't really look it over, so sorry for grammatical or vocabulary based errors.)
(P.P.S. I recommend any book to do with android programming, but you'll need programming experience in linux, especially eclipse.)

Oh, and I'm a 17 year old junior with a vocabulary skill level of 139, just in case you wondered.