Bastava mettere un printf prima del confronto per vedere che b non contiene caratteri; in effetti dal tuo codice b viene solo dichiarato ma non inizializzato.
Insomma, io rivedrei l'algoritmo, ci sono sicuramente soluzioni più appropriate e semplici.

Modifica la funzione così:
codice:
void palindroma(char a[])
{
    int i; int c = 0;
    char b[strlen(a)];
    
    for(i=strlen(a)-1;i >= 0; i--){
    b[c] = a[i];
    c++;
    }
    b[c] = '\0';
    
    if(!strcmp(a,b))
      printf("E' palindroma");
    else
      printf("Non e' palindroma");
}

Ciao