Il codice nel libro è ha scopo didattico per questo hanno usato un modo per spegnere e riaccendere globalmente gli interrupt. Il bit per accendere e spegnere gli interrupt si trova nel registro SREG.
cli() in sostanza spegne o disabilita gli interrupt globalmente, la riga seguente:
Pos = encoderPos;
viene eseguita con gli interrupt disabilitati.
Continuando gli interrupt vengono riabilitati senza usare sei(), ma scrivendo il valore del registro salvato in oldSREG,
in SREG. In questo caso oldSREG mantiene lo stato di SREG nel momento in cui gli interrupt sono abilitati.
Il libro dovrebbe consigliarti di usare una macro con cui creare codice eseguito atomicamente, continua leggere magari lo spiega più avanti. Se hai ancora dubbi posta pure, comunque fai una ricerca nel forum perché l'argomento è stato più volte affrontato anche in profondità.
In tutte le architetture hardware delle CPU c'è il concetto di interrupt, che trasportato nel mondo reale equivale
a chiamare qualcuno impegnato in una conversazione al telefono, la sequenza di ciò che accade è la seguente:
Il tizio senta la richiesta di interruzione e dice al tipo che sta all'altro capo del telefono; scusa ho una richiesta di interruzione, dopo di che ti presta attenzione ed esegue la ISR e al termine torna a parlare con il tipo al telefono.
Se la telefonata è di importanza vitale, tizio disabilita gli interrupt in modo che non possa essere interrotto durante la conversazione.
PS: il libro non l'ho letto.
PS1: Per comprendere nel dettaglio gli interrupt devi leggere il datasheet del microcontroller.