Hola, creo que te has dejado de programar una parte del enunciado: "...carácter (letra / número) al inicio de la cadena de texto (posición cero)...". Vamos, que has de comprobar que en la posicion text1[0] no haya espacios, tabulador, etc. como te dice ahi. Y luego ya el resto de las comprobaciones.
// Antes del bucle for:
if (!(text1[i]==32 || text1[i]==9 || text1[i]==44 || text1[i]==46 || text1[i]==59 || text1[i]==58))
{
q++;
}
Aunque tambien podrias hacer lo siguiente, que creo que funcionaria:
text1[0]=' ';
scanf ("%[^\n]", &text1[1]);
Es para que en la posicion 0 haya un espacio y lo cuente como palabra. El problema seria si la frase comienza con un espacio, pero te ahorras un if antes del for