Char* vuol dire puntatore a char, serve a dichiarare stringhe di lunghezza non prefissata.
char** è un puntatore a puntatore a char, serve a fare array di stringhe. L'argomento argc contiene il numero di stringhe passate al programma come parametro.
Ad esempio se lanci in tuo programma da riga di comando così:
mioprogramma.exe pippo caio
argc contiene 2, mentre con argv puoi accedere ai due parametri come faresti con un array.
for(int i=0;i<argc;i++)
printf("%s\n", argv[i]);
output
pippo
caio
Però se non sai i puntatori è inutile procedere alla cieca.