The triac is a solid-state switch which will conduct in either direction, hence its use in AC circuits. Once triggered, it will stay on until the current goes to zero, which is every half cycle, so you need to retrigger it every half cycle. The average power to the load can be varied by adjusting how long you wait after each zero crossing before turning the triac on. This is the job of the 555 in your circuit. The zero crossing detectors you have seen recently (Fairchild's and mine) simply generate a negative-going pulse which starts just before the zero crossing. This immediately triggers the 555. At the end of the 555's timeout, the triac turns on, and stays on until the next zero crossing, where the absence of current causes it to turn off.
While it's true that a short pulse will theoretically allow you to trigger the triac earlier in the next half cycle, in fact it won't turn on anyway until the voltage reaches a certain minimum value, even if you have applied a pulse to the gate which starts at the very beginning of the half cycle.
I don't think you need a shorter pulse. You can knock a few tenths of a millisecond off the width by changing the resistor between the bridge and the base from 100k to 10k or so.
The transistors do exactly what you surmised - they provide gain, which gives you a nice pulse with fast transition times. The first transistor gives a pretty good-looking pulse, but it needs to be inverted. The second one does that and improves the transition times.
The other circuits, posted below, have slower transition times, which should be OK. The pulse width on zero_xing8 (the top one) is on the order of 200 to 300 microseconds.
You can also use a bridge rectifier and a comparator to get almost any pulse width you want.