You can find my guide here: Building CyanogenMod 6 from Source
Why would you want to build your own ROM? Well, the reasons are not very different from why people want to build their own Linux kernel, or build an entire distro from scratch (e.g. LFS). Or, so that you could simply sync in the latest source changes and be forever on the bleeding edge of the latest Android ROM.
By the way, if you want the latest CyanogenMod but you’re not skillful enough to build your own ROM, you could just download the automatic nightly builds. But remember, when you are on the nightly builds… they represent work-in-progress, so expect some things will break. There could be bugs that the developers already know and don’t care for them to be reported over and over again.