la qsort, così come pensata, deve funzionare con qualsiasi tipo di dato organizzato in una array.
compar è definito come un puntatore a funzione che ritorna un int ed ha come argomento due puntatori a const void , perchè a priori non si sa quale dato dovrà confrontare.
Questa funzione sarà richiamata all'interno della implementazione della funzione qsort è ritornerà un valore intero che è == 0 se gli elementi che si confrontano in quel momento sono uguali < di zero o maggiore di zero altrimenti, stesso funzionamento che ha la strcmp .
La funzione compare la definisci tu, perchè solo tu sai come ordinare l'array del tipo che hai creato.
In questo caso tu vuoi ordinare la tua array in ordine crescente del campo punti della struttura SQUADRA.
Durante il riordinamento la funzione qsort considererà due elementi della tua array (quelli che in quel momento sono da riordinare) e chiamerà la funzione compar che riceverà i puntatori a quei dati. Sebbene quindi dichiarati come const void * va quindi fatto un cast alla struttura SQUADRA per poter accedere ai loro campi punti, che sono quelli che andranno confrontati. La funzione, nel tuo caso, semplicemente ritorna la differenza trai due interi perchè questo già rispetta la specifica della funzione compar.
Ti ricordo però che le tue squadre dovranno essere organizzate in una array per utilizzare la funzione qsort.
ciao
sergio