NIZK proofs: Why is the prove function necessary? In NIZK proofs, the prover can generate its proof for statement $y$ and witness $w$ using

$$\pi \gets \mathrm{Prove}(\sigma,y,w)\text{,}$$

where $\sigma$ is the common reference string. Source: Wikipedia.

However, the zero knowledge property tells us that everyone could have generated a pair $(\sigma, \pi)$ itself. Source: Wikipedia.

So what is prove needed for? I guess it is needed, because the verifier forces the prover to use a given common reference string $\sigma$? This is probably the reason why the verifier can not convince any other verifier?
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.