il discorso deve essere avulso dal particolare linguaggio.
in generale in informatica la differenza tra procedure e funzioni e' quella che ti ho spiegato ieri, cioe' funzione n parametri in ingresso e solo uno in uscita, mentre la procedura ha n parametri in ingresso nessun valore in uscita.
quando si parla di puntatori (o passaggio per indirizzo che NON sono la stessa cosa ) si definisce la modalita' di passaggio di un parametro ad un sottoprogramma(funzione o procedura) che puo' permettere la modifica del parametro passato.
praticamente se ad un sottoprogramma passo un parametro per valore questo non puo' essere modificato, se passo un parametro per riferimento posso modificare il valore del parametro ma non il suo indirizzo, perche' tecnicamente (e questo complica i fatti) e' un passaggio per valore dell'indirizzo in memoria della variabile, il cui indirizzo in memoria non puo' essere modificato.
questo per stare sul semplice, altrimenti le cose si possono anche rendere piu' complicate. ma non credo sia il caso.