Hi,
The op amp supplies a varying a base voltage or gate voltage to the BJT or MOSFET to keep the feedback voltage the same as the voltage reference. The feedback voltage is the voltage developed across the shunt resistor (I find it easier putting the shunt between ground and emitter/collector or source/drain). Non-inverting op amp input sees reference voltage; inverting input sees voltage developed on shunt and outputs whatever is necessary to keep them equal. The shunt resistor value * required current has to equal the reference voltage, e.g. with a 2.5V reference, 125 mA, the resistor is 20 ohms. I'd use a voltage reference IC, or for a loose reference voltage a resistor voltage divider, instead of a Zener, unless wasting current is not an issue.