Così come nell'altra tua discussione, devi definire la variabile (o le variabili) sul livello principale in modo che siano rese globali.

Sono nozioni di base. Se il fine è didattico, forse stai saltando qualche capitolo. Sarà il caso di riprendere da qualche guida di base, non pensi?

Variabili (JavaScript)
Ambito della variabile (JavaScript)
Variabili globali e locali: lo scope

Per dichiarare (esplicitamente) una variabile sai bene che si utilizza l'istruzione var. Dal momento che hai dichiarato la tua variabile all'interno della funzione, questa è locale, quindi può essere vista solo nell'ambito di quella funzione. Non solo, sarà valida solo fino a quando la funzione stessa non sarà terminata. Il tuo setInterval è valorizzato in una variabile locale, quindi non puoi terminarlo dall'esterno di quella funzione.

Il fatto che tu richiami la stessa funzione, va a ricreare una nuova variabile locale definendo, di fatto, una nuova istanza per il setInterval. Questo significa che si attiveranno più setInterval contemporaneamente senza mai terminare.

Chiaramente, come tu stesso già avevi intuito anche sull'altra discussione, e come ti ho indicato qui, un primo passo da fare è quello di definire la variabile (conteggio) a livello globale, e non locale.

Inoltre setInterval va terminato con clearInterval, mentre setTimeout col relativo clearTimeout. Non è possibile mischiare le due cose come hai cercato di fare.

Ci sono poi anche altri errori nei codici che hai postato ma per ora sorvoliamo.