Più che digerire, il consiglio è quello di studiare e approfondire e se vuoi "capire" cosa fa l'istruzione Wire.write((uint8_t*)&value, sizeof(float)); che poi è del tutto analoga a quella che ha suggerito @C1P8 , l'argomento è quello dei puntatori.
I puntatori sono tipicamente uno degli argomenti con cui si fa più fatica, ma sono fondamentali in C/C++.
Online trovi tantissimo materiale che può aiutarti a schiarire le idee come ad esempio le varie dispense dei corsi universitari (se ne trovano un po' di tutte le università).
Provo a darti qualche spunto, ma non aspettarti che un post in un forum possa essere esaustivo ed il resto ce lo devi mettere da solo.
La libreria Wire come detto include questo metodo:
size_t TwoWire::write(const uint8_t *data, size_t quantity)
Il metodo come vedi si aspetta due parametri: un puntatore a uint8_t (unsigned char, ovvero byte) ed un valore size_t che rappresenta la quantità di byte da trasmettere. L'uso del qualificatore const sta ad indicare che data non sarà modificato in alcun modo dal metodo write().
Tu stai lavorando con i float che come abbiamo già detto, nel mondo dei microcontrollori in questione vengono rappresentati con 4 byte (lasciamo perdere il come per adesso, ma se vuoi approfondire prova a giocare con questo tool online)
Per usare la funzione quindi devi passare il puntatore alla tua variabile float e questo si ottiene con l'operatore & che in poche parole restituisce un valore numerico che rappresenta l'indirizzo di memoria dove viene conservata la variabile float.
Il metodo però accetta un puntatore a uint8_t e non a float quindi è necessario fare il cast del puntatore con l'espressione tra parentesi (uint8_t*) posta prima del puntatore a value.
In questo tipo di funzioni si usano dei puntatori a "generici" byte proprio perché in questo modo si può inviare qualsiasi tipo di variabile con lo stesso metodo: un float un long, un array, una C string (ovvero un array di char), una struct etc etc.
Basta specificare indirizzo di memoria e lunghezza della variabile.
Dal lato opposto dovrai fare l'operazione contraria e ricostruire il float a partire dai 4 byte inviati sul bus.
