NIZK proofs: Why is the prove function necessary?
Prove$\:\:$is needed to convince the verifer(s) that $y$ is true.
Sort of; the verifier(s) will have almost as much control as the prover over the choice of $\sigma$.

The verifier(s) can convince (every) other verifier by forwarding $\pi$ to the other verifier(s).

Unlike ZK protocols in the standard model, which have

deniability, NIZK proofs instead have transferability.

Related to NIZK but not otherwise related to your question:

multi-string NIZK uses a weaker setup 
assumption.