Premesso che non sono ferratissimo in materia, credo sia un residuo della programmazione in C.
Metti il prototipo all'inizio così il compilatore sa come sarà quella funzione.
Qui spiegano qualcosa
Nell'ide di arduino non sono necessari (o almeno io non li ho mai usati e non ho mai avuto problemi).
Nell'IDE di Arduino la cosa non è obbligatoria perché .... di nascosto lo fa lui
SI, il linguaggio 'C' prevede che un funzione, per poter essere utilizzata, sia già stata definita, quindi, se nel tuo porgramma le scrivi tutte PRIMA di richiamarle, va bene, se invece le richiami ma non le hai già scritte, allora ... occorre quanto meno averle definite e poi, la loro scrittura completa può avvenire altrove. Questo perché, ad esempio, quando richiami una funzione, il compilatore GIA' deve sapere cosa questa restituisce e i parametri che vuole e quindi ... almeno questo glie lo devi aver già detto.
Se ti allontani dall'IDE di Arduino e usi ambienti "porfessionali", praticamente la cosa è obbligatoria
Dici solo al compilatore "come" è fatto ciò che stai chiamando, prima di aver veramente esplicitato il tutto ... così lui può controllare se stai passando i giusti parametri e il valore di ritorno.