Tim
first off you can't use 12 volts DC, that defeats the whole purpose of the entire project!

the zero crossing part works by raising an interrupt every time the AC crosses zero (hence the catchy name)
you need this as the code will set a delay from the zero cross point before firing the triac
that's how it controls the speed

to go faster fire earlier
to go slower fire later

the triac turns itself off when the voltage drops to zero
so it needs to be turned on again every half cycle

hope that made some sort of sense!