Pierwszy zapis, czyli
char liczba[2];
jest to dwuelementowa tablica zmiennych typu char. Co to oznacza? Może ona przechowywać maksymalnie dwa znaki, nie może przechowywać dwóch napisów.
Drugi zapis, czyli:
char *liczba[2];
możemy zapisać też w inny, moim zdaniem lepszy i czytelniejszy sposób:
char* liczba[2];
Co widzimy? Mamy dwuelementową tablicę wskaźników na char. Wskaźnik na char może wskazywać na pierwszy element (znak) łańcucha znaków, jak tutaj:
char* string = "Ala ma kota";
Wskaźnik string wskazuje na adres, pod którym znajduje się literka 'A'.
Mamy więc tablicę dwóch wskaźników, które kolejno wskazują na dwa różne łańcuchy znaków (na ich początki).