Il typedef è lì perché la sintassi dei puntatori a funzione in C/C++ è odiosa. In sostanza la dichiarazione di un puntatore a funzione è:
Tramite un typedef del tipocodice:tiporestituito (* nomevariabile) (elenco argomenti)
ottengo di poter usare nometipo come tipo del parametro da passare alla funzione invece di tutta quella sbrodolata.codice:typedef tiporestituito (* nometipo) (elencoargomenti);
Per il resto, un puntatore a funzione sta ad una funzione come un normale puntatore sta ai dati a cui punta: ogni funzione sta ad una certa locazione di memoria, e per ottenere tale indirizzo o si usa la sintassi &nomedellafunzione oppure basta semplicemente usare il nome della funzione. Vedi infatti che nella chiamata a f_campionata (in fondo) passo come ultimo argomento il nome della funzione che essa dovrà richiamare.
All'interno di f_campionata funz è il puntatore a funzione (è di tipo IntInFloat, che altro non è che un typedef per float (*) (int), ossia per un puntatore a funzione che ha un parametro int e restituisce un float), per "dereferenziarlo" e chiamare la funzione a cui punta basta usarlo come se fosse il normale nome di una funzione.
In ogni caso, ti consiglio di leggerti il link che ho inserito nel post precedente.

