Cortar char y convertirlo a char*

Habría muchas formas de parsear la cadena. Tendríamos que saber si la cadena que llega tiene siempre esa estructura: una serie de caracteres iniciales (por ejemplo, hasta 8), un carácter '=' y 4 dígitos
Si es así, podrías hacer algo así

char cadena[] = "alrm1=2030";
char *p, a[15], b[5], c[3];

// la primera parte
strcpy(a, cadena);
p = strchr(a, '=');
if(p != NULL) *p = '\0';  // se corta en el carácter '='

// segunda parte, se copia a partir de '=' y se corta dejando 2
p = strchr(cadena, '=');
if(p != NULL)
{
   strcpy(b, ++p);
   b[2] = '\0';  
}

// tercera parte
p = strchr(cadena, '=');
if(p != NULL)
{
   p += 3;   // se corren 3 posiciones y se copia lo que queda
   strcpy(c, p);
}

Si las variables tienen que ser necesariamente punteros, puedes tener definidos dichos punteros, y luego apuntar al inicio de cada cadena

char *pa, *pb, *pc;

pa = &a[0];
pb = &b[0];
pc = &c[0];

Lo que no puedes es copiar una cadena en un puntero como char *a sin antes reservar espacio con malloc()