You can buy 4 terminal resistors down to milliohms. Needs to be 4 terminal although for applications where you can factory-calibrate the scale and don't care about the tempco (or have a temp sensor so could compensate) you could just use a copper track and it would save you using some weird component.
Low side sensing is simpler, if you can arrange it. But high side is also easy if you can find a supply rail which is a few volts higher still (normally that needs a DC-DC converter, a diode-capacitor pump, or some such).
LM358 does most jobs, senses below GND rail, and is an excellent commodity-grade part which will never become unobtainable, but as you can see you will have a tradeoff between the precision achievable, and how much the shunt needs to drop (which will eventually drive some temp rise on the shunt).
There are loads of better op-amps. I currently use a TLV2333 which is super accurate (chopper stabilised). The TI version is better than the NXP version. But not cheap. Avoid parts from Maxim, LT, Analog. Go for something common as muck.
What micro are you using (what ADC spec)?