Come ti ho detto, a mio parere devi introdurre una nuova variabile che, ad ogni iterazione del ciclo while, si memorizzi il puntatore all'elemento precedente, cioè quello assunto dalla variabile puntatore ausiliaria prima che questa venga riassegnata al nuovo indirizzo che corrisponde all'elemento successivo.

Quando individuerai l'elemento che deve essere eliminato, avrai a tua disposizione anche l'indirizzo dell'elemento precedente; prima di procedere con la rimozione fisica dell'elemento tramite la procedura Dispose, dovrai aggiornare il campo dell'elemento precedente affinchè punti all'elemento che segue quello che stai per cancellare.
codice:
...
pPrev := nil;
pAus := pLista;
while pAus <> nil do
begin
  if pAus^.Inf = Num then
  begin
    if pPrev <> nil then
      pPrev^.Pun := pAus^.Pun
    else
      pLista := pAus^.Pun;
    Dispose(pAus);
    pAus := nil;
  end
  else begin
    pPrev := pAus;
    pAus := pAus.Pun;
  end;
end;
...
Il codice è a puro titolo esemplificativo (non l'ho verificato, ma dovrebbe funzionare).

In particolare, mostra come mantenere il riferimento all'elemento precedentemente puntato e utilizzarlo per correggere i riferimenti degli elementi in fase di eliminazione.

Credo che tu debba anche passare sempre come parametro var il puntatore di inizio della lista poichè nel caso venga eliminato il primo elemento, anche quell'indirizzo deve essere modificato e restituito.

Ciao!