char* typically points to an array of byte-wide characters (a string).
char** typically points to an array of strings. This is used as the second parameter to
main(), for example, to point to the command line argument strings.
…though TobiSGD's description is more general (and accurate).
Also, correct me if I'm wrong, but I think you can nest pointers an arbitrary number of levels, i.e. you can have a pointer to a pointer to a pointer (e.g.
char***), right? Not that this would be necessary most of the time, but in theory I don't see why it shouldn't be possible… :-\