¡Correcto! Esa es la estrategia que vamos a seguir. Si tú prefieres otra, prueba a programarlo y si te sale, ¡estupendo!.

Vamos a dividir la tarea en los siguientes bloques:
Repasa la estrategia hasta que entiendas lo que se pretende, antes de seguir.
La función podría construirse sobre el siguiente esqueleto:
#define MAXLETRAS 100
void cuenledis(.... fichero, .... numledis) {
.... letra...
.....listadistin....
....posicion... /* donde encuentre a la letra en la lista */

....=0; /* Ponemos a 0 inicialmente la cantidad de letras */
while(fscanf(....letra) == ...) {
    busca(...listadistin,...numledis,...letra,....posicion);
    if (posicion .... -1) {/* Es que no la encontró */
        listadistin... /* La ponemos al final */
        ...numledis... /* La contamos */
    }
}
}

Cópiala en tu programa en el hueco que preparaste para ella. Cuando ya la hayas copiado sigues con la siguiente cuestión.
Los argumentos de la función son el fichero y el número de letras distintas. Completa la cabecera:
void cuenledis(FILE fichero, int numledis) {
void cuenledis(FILE *fichero, int numledis) {
void cuenledis(FILE fichero, int *numledis) {
void cuenledis(FILE *fichero, int *numledis) {