Cambiar delay por micros()

Que es lo que no entiendes?

Todo lo que hace no te importa solo mira el loop()

void loop(){ // sample code to exercise the circuit

i--;
OCR1A = i;     //set the compare register brightness desired.
if (i<65){i=483;}                      
delay(15);                             

}

Ahi esta el codigo que le dice la OCR1A que hacer.
va desde 483 hasta 65

Bien parece chino básico sin ofender a los chinos. Pero eso es el dimmer que estas viendo.

Ahora tiene dos rutinas del timer

ISR(TIMER1_COMPA_vect){ //comparator match
  digitalWrite(GATE,HIGH);  //set TRIAC gate to high
  TCNT1 = 65536-PULSE;      //trigger pulse width
}

ISR(TIMER1_OVF_vect){ //timer1 overflow
  digitalWrite(GATE,LOW); //turn off TRIAC gate
  TCCR1B = 0x00;          //disable timer stopd unintended triggers
}

y ahi se acciona el triac y se lo apaga.
entonces el segundo triac se apaga como el primero
Y para su disparo tal vez haya que usar otro timer

De todos modos no se que quieres hacer con los Triacs.