Codigo punteros

Hola deseo compartir un codigo que estuve revisando al parecer contiene punteros, deseo saber que entienden uds por esta expresion, que hace?:

byte* a1 = (byte*) &var1;

Aqui les deje la subrutina completa:

void add_float(float var1) //funcion para agregar flotantes al payload
{
  byte* a1 = (byte*) &var1;    //convertimos el dato a bytes
  String str1;
  //agregamos al comando AT$SF= nuestra informacion a enviar
  for(int i=0;i<4;i++)
  {
    str1=String(a1[i], HEX);    //convertimos el valor hex a string 
    if(str1.length()<2)
    {
      bufer+=0+str1;    //si no, se agrega un cero
    }
    else
    {
      bufer+=str1;    //si esta completo, se copia tal cual
    }
  }
}

De antemano muchas gracias por los comentarios

Saludos

Los punteros son uno de los temas más complicados para los principiantes de Arduino y es posible escribir la gran mayoría de bocetos sin tener que encontrarse con los punteros. Sin embargo, para la manipulación de ciertas estructuras de datos, el uso de punteros puede simplificar el código, y el conocimiento de la manipulación de punteros es útil para tener en la propia caja de herramientas.

Punteros:Serial Arduini
ArduWiki

&var1 apunta a la dirección de la variable float var1
el puntero es del tipo byte
entonces esa forma de usar el typecast hace que

byte* a1 = (byte*) &var1;

a1 se llene de los bytes que conforman la variable var1 para luego poder convertirla a un formato que supongo será un JSON final.

str1=String(a1[i], HEX);    //convertimos el valor hex a string

con esto tomas cada byte del puntero a1 a formato hexadecimal en el String str1
Supongo que bufer sera otro string que concatena cada byte y le agrega un 0 si es de solo 1 digito