Il typedef è lì perché la sintassi dei puntatori a funzione in C/C++ è odiosa. In sostanza la dichiarazione di un puntatore a funzione è:
codice:
tiporestituito (* nomevariabile) (elenco argomenti)
Tramite un typedef del tipo
codice:
typedef tiporestituito (* nometipo) (elencoargomenti);
ottengo di poter usare nometipo come tipo del parametro da passare alla funzione invece di tutta quella sbrodolata.

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.