Tempo para acender um led

Se fosse a ti esquecia o delay porque eventualmetne vais querer fazer algo mais e o programa não vai funcionar.

Faz algo deste género:

//fora da loop()
unsigned long temporizacao = 0;


unsigned char inicio = digitalRead(pinoBotao); 
unsigned char contando = 0; 

if (inicio == 1) { //botao pressionado
   temporizacao = millis(); 
   digitalWrite(LED1, HIGH); 
   contando = 1; 
}

if (contando == 1 && (millis() - temporizacao > 30000)) { //passaram 30 segundos e contando esta activo
   contando = 0; 
   digitalWrite(LED2, HIGH);
}

Não disseste como queres fazer reset aos LEDs logo deixo isso para ti.