[Desire HD Android Development] MacCarron:
My pleasure :).

Kernel governors are models and algorithms implemented within a kernel to allow the CPU to change frequency dynamically, each governor has its own "rules". Quoting LorD CloackN post from his kernel thread

Governors for NOOBS:

interactive - Instead of sampling the cpu at a specified rate, the governor will scale the cpu frequency up when coming out of idle. When the cpu comes out of idle, a timer is configured to fire within 1-2 ticks. If the cpu is 100% busy from exiting idle to when the timer fires then we assume the cpu is underpowered and ramp to MAX speed.

smartass - Is an improved version of interactive governor

ondemand – Available in most kernels, and the default governor in most kernels. When the CPU load reaches a certain point (see “up threshold” in Advanced Settings), ondemand will rapidly scale the CPU up to meet demand, then gradually scale the CPU down when it isn't needed.

conservative – Available in some kernels. It is similar to the ondemand governor, but will scale the CPU up more gradually to better fit demand. Conservative provides a less responsive experience than ondemand, but can save battery.

performance – Available in most kernels. It will keep the CPU running at the “max” set value at all times. This is a bit more efficient than simply setting “max” and “min” to the same value and using ondemand because the system will not waste resources scanning for CPU load.

powersave – Available in some kernels. It will keep the CPU running at the “min” set value at all times.

userspace – A method for controlling the CPU speed that isn't currently used by SetCPU. For best results, do not use the userspace governor.

brazilianwax - Very agresive version of smartass

interactiveX - Tweaked Interactive governor by Imoseyon by adding more features like suspend/wake profile

ondemandX - Tweaked and ported from 2.6.38 base Ondemand governor by Imoseyon by adding more features like suspend/wake profile

Of course not all kernels implement that many governors, but usually you'll find at least:

interactive

ondemand

conservative

performance

As far as I know no Android kernel supports the userspace governor. This governor keeps the CPU freq at a static value selected by the user, and because of its very nature it can be in a way "emulated" by selecting any governor and using the sliders in applications like cpu frills or setcpu to keep both maximum and minimum frequencies at the same value.

There's a lot of debate concerning the usefulness of overclocking above a certain level: unlike what happens in PCs where almost every extra Mhz helps, it would seems that, for instance with the DHD, performance increase when going above 1.5Ghz is not noticeable at all (except in benchmarks, but those are just numbers), others will surely beg to differ. I think it may be noticeable only when playing heavy 3D games, even though in that particular case it would be much more useful to be able to overclock the GPU.

Usually I choose a governor that allows for automatic dynamic scaling.

When I was running CMod, i selected the lowest available frequency for the "minimum" setting and 1300-1500Mhz for "maximum", with governors like "smartass" or derivatives.

Selecting a low frequency for "minumum" allows your phone's CPU to "rest" when not needed (i.e. when the screen is off). As I explained before, high frequencies imply high voltages, but at the same time low frequencies can imply low(er) voltages. Keeping the CPU at a low frequency and a voltage lower than stock (refer to each kernel's voltage and frequency tables) will have beneficial effects on battery life, though any improvement it is very difficult to quantify.

On Virtuos, for now I am keeping stock frequencies for both min and max (both asleep and awake) and using the ondemand governor when awake, conservative when asleep.

Just like with overclocking, there's no absolute truth and your mileage may vary :)

Oh and remember, while overclock will most likely not kill your CPU, it will definitely speed up its inevitable "erosion". This is because of how CPUs and circuits in general are designed, unfortunately. Let me know if there's anything else you need clarified and I'll help if I can ;)