Consider the NP language SAT.
A Non-Interactive proof for SAT is the following:
The Prover given an instance of SAT (namely, a boolean formula on n-variable) return to the Verifier a valid assignment.
The verifier given an instance and a proof applies the assignment defined by the proof on the instance and check if it evaluate to 1.
Obviously, this proof system is not Zero-Knowledge, in fact here the verifier learns that the instance is in SAT but also learn the a valid assignment for the instance sets, for example, the variable x_1 to 0 and the variable x_6 to 1.
Now, we would like to have the same concept of ZK in the setting above where there is no interaction between the prover and the verifier.
So the idea of NIZK is a proof system where a prover can produce a proof without any interaction, and this proof should be reveal the only knowledge that the instance is valid.
The standard definition of ZK assumes the existence of a simulator that provide "good-looking" proof without having access to the witness.
It is easy to see that this definition cannot be used here straightly.
Why? well, if such simulator exists then either we break the soundness or the language is in BPP.
The simulator, in fact, can produce valid good-looking proof for instance $x\in L$ but what happen if we feed it with an instance $x\not\in L$: there are two cases: 1) it produces a good-looking proof, but now we have an adversary that breaks soundness (namely, a machine that can convince the verifier with a proof for a false statement), 2) it cannot produce a good-looking proof, but now we have a probabilistic machine that can decide the language $L$ efficiently, therefore $L \in BPP$.
Because of this impossibility result, we need to give to the simulator some extra power, one way to do this is to relying on a trusted-setup assumption as the CRS model. This is how usually NIZK are formulated:
There exists some good randomnes in the sky which is a common parameter for the verifier and the prover, and the NIZK provided by the prover depends on it.
The simulator gains some extra power because, in the ideal world, it can control the randomness that comes from the sky.
So to define (or one, more precisely, to define one of the possible flavor of NIZK) one require the existence two simulators $S_0,S_1$ where the first one can generated a good looking common reference string (with a trapdoor known only by the simulator) and the second can generate good-looking proof for valid statement.
In the random oracle model the concept is similar, the good randomness that comes from the sky is the RO, the simulator as extra power because it can programs/interact with the RO.