Le alternative sono
nodo* inserimento_in_testa(nodo *p, int n)
{
    ...
}

int main()
{
    nodo *testa = NULL;
    testa = inserimento_in_testa(testa, 5);
    ...
}
o
void inserimento_in_testa(nodo **p, int n)
{
    ...
}

int main()
{
    nodo *testa = NULL;
    inserimento_in_testa(&testa, 5);
    ...
}
La seconda, anche se magari inizialmente può sembrare meno intuitiva, comporta notevoli vantaggi, tra cui la possibilità di scrivere codice più conciso.

P.S.
Come già detto se il linguaggio è C++
- non c'è bisogno del typedef sulla struct in quanto la definizione di una struct comporta la creazione di un nuovo tipo;
- al posto di NULL dovresti utilizzare nullptr.