Te estas liando. Los punteros son direcciones de memoria que apuntan a algo. En tu codigo estas asignando el primer caracter de la cadena "pcad" que es un "1" a la variable entera. El código ASCII del "1" es 49 que es lo que te da como resultado. Para pasar un valor numerico en formato texto a un entero hay que usar strtol():
char *endptr;
b =strtol(pcad,&endptr,10);
printf("%u\n",b);
Si solamente deseas mostrar el valor por pantalla no hace falta que lo pases a entero, con hacer un printf("%s/n",pcad); es suficiente.
Por cierto, no hace falta que hagas
char *pcad=NULL;
pcad= "1993";
Con poner
char *pcad="1993";
es suficiente.
Saludos