Per capire come funziona devi partire dal tipo base "int" e da come è memorizzato. Facciamo un esempio senza union, per capire come lavora il compilatore.
Il tipo "int" è un tipo dati a 16 bit, occupa quindi 2 byte in memoria. Quindi, per memorizzarlo, il compilatore usa 2 celle di SRAM per il suo valore.
Sapendo questo, se vuoi memorizzare una variabile "int" in EEPROM non devi fare altro che dividerla nei suoi 2 byte. Le funzioni che ti ho suggerito fanno questo (le hai lette le pagine linkate?).
Il byte alto è il byte più a sinistra, il byte basso quello più a destra.
Per ricomporre il numero non fai altro che leggere i 2 byte singolarmente, poi inserirli in una variabile di tipo "int", ossia mettere i valori in 2 byte della RAM. La moltiplicazione per 256 equivale ad uno spostamento di 8 bit a sinistra.
Ti illustro.
Mettiamo che devi salvare il valore 0b1100001100111100
lowByte(0b1100001100111100) restituisce 0b00111100, cioè gli 8 bit più a destra mentre highByte(0b1100001100111100) restituisce 0b11000011, cioè gli 8 bit più a sinistra. Così saranno memorizzati.
Per ricomporre il numero leggi prima il byte alto e lo inserisci nella variabile di tipo "int", che conterrà dopo questa operazione:
0b0000000011000011
Adesso gli 8 bit a destra li devi spostare di 8 bit a sinistra, per far posto al resto dei bit.
Puoi ottenere la cosa o con uno spostamento di bit (<<8) oppure anche con una moltiplicazione per 256 (la strada che ti ho suggerito, che è più facile da capire. Questo perché 256=2^8, quindi moltiplicando un numero per 256 lo sposti di 8 bit a sinistra.
Quindi 0b0000000011000011 * 256 = 0b1100001100000000
Ora sommando il byte basso, 0b00111100, riotterrai il valore iniziale
0b1100001100000000 + 0b0000000000111100 = 0b1100001100111100
All'atto pratico, un numero da 1 65535 ti occupa 2 byte. Se i numeri sono superiori a 65535, devi usare un dato di tipo "long", che occupa 4 byte. Le operazioni da eseguire sono più complesse perché questa volta devi usare le operazioni sui bit, quali and, or e spostamenti.
Ad esempio, prendiamo il valore "long" 9000, che è in binario
0b00000000000000010101111110000
Per ottenere il 1° byte a sinistra, devi spostare a destra di 24 posizioni il valore così da spostare i primi 8 bit nelle posizioni meno significative e poi devi fare un AND con una maschera con 8 bit ad 1
0b00000000000000010101111110000 >> 24 = 0b00000000000000000000000000000000
Poi 0b00000000000000000000000000000000 AND 0b11111111 = 0b00000000
Per il secondo byte, fai lo stesso spostando però di 16 posizioni
0b00000000000000010101111110000 >> 16 = 0b00000000000000000000000000000001
Poi 0b00000000000000000000000000000001 AND 0b11111111 = 0b00000001
Ecc...
Per ricomporre devi fare semplicemente una somma con spostamento a sinistra ed OR binario per sommare i vari byte in un unico "long"
long variabile = (EEPROM.read(primacella)<<24) | (EEPROM.read(secondacella)<<16) | (EEPROM.read(terzacella)<<8) | EEPROM.read(quartacella)