Avvio ciclo...

Spiego cosa devo fare: premo il pulsante in pin8 ed avvio un ciclo per cui il led al pin2 si accende per 2 secondi, poi si spegne e dopo 2 secondi si accende il led al pin 3 per altri 2 secondi e si spegne anche quest'ultimo.
Bene ora per riavviare il ciclo come faccio?

non so se sbaglio qualcosa nella programmazione o mi manca a me qualche nozione...

ecco il codice:

#define LED1 2                // LED collegato al pin digitale 2  
#define LED2 3                // LED collegato al pin digitale 3    
#define BUTTON 8              // pin di input dove è collegato il pulsante  
int val = 0;                  // si userà val per conservare lo stato del pin di input  
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led 
int counter1 = 0;
int counter2 = 0;


void setup() {  
  pinMode(LED1, OUTPUT);       // imposta il pin digitale come output 
  pinMode(LED2, OUTPUT);       // imposta il pin digitale come output  
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input  
}  

void loop() { 
  
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva  
 
  if ((val == HIGH) && (vecchio_val == LOW)){  // controlla se è accaduto qualcosa a val
    stato = 1 - stato;  
    delay(15);                // attesa di 15 millisecondi  
  }   

  vecchio_val = val;            // ricordiamo il valore precedente di val  

    if (stato == 1 && counter1 < 1) {  
      digitalWrite(LED1, HIGH);   // accende il led 1
      counter1 = counter1 + 1;
      delay(2000); 
      digitalWrite(LED1, LOW); 
      delay(2000);
      
  }  
  else {  
    digitalWrite(LED1, LOW);    //spegne il led 1
  } 
     if (stato == 1 && counter2 < 1) {  
      digitalWrite(LED2, HIGH);   // accende il led 1
      delay(2000); 
      counter2 = counter2 + 1;
      digitalWrite(LED2, LOW); 
            delay(2000);
  }  
  else {  
    digitalWrite(LED2, LOW);    //spegne il led 1
  }  
  
  
 }

loop_1:
Bene ora per riavviare il ciclo come faccio?

Mi pare che nel tuo programma manchi qualcosa. basi l'avvio del ciclo sul valore di "val" e di "vecchio_val", che contiene la lettura del pulsante, ma non salvi in vecchio_val la lettura fatta.

come non salvo la lettura fatta?

ho messo questo:
vecchio_val = val; // ricordiamo il valore precedente di val

Se non mi sbaglio dovresti azzerare counter1 e counter2 dove fai counter2=counter2+1
Quindi usando quelle due variabili come fai con stato e non come contatori.
Meglio sarebbe avere due variabili stato1 e stato2 ed i test farli su esse.
da questo:

if (stato == 1 && counter1 < 1) {
...
counter1 = counter1 + 1;

a questo:

if (stato == 1 && stato1 < 1) {
...
stato1=1;        
counter1 = counter1 + 1;

Fatto questo potrai capire bene che stato1 e stato2 potrebbero diventare una sola variabile (statoled) che utilizzi non con soli 2 valori 0 o 1 ma con tre valori, 0, 1 o 2 per sapere in quale "stato" sono i led ovvero quale pezzo di codice devi eseguire.
Alla fine delle varie accensioni/spegnimenti questo "statoled" lo riporterai a 0.

Scusa, non l'avevo visto.
Appoggio l'idea di nid69