There are many ways to sense the current in an electronic application. Some are using a resistor called a shunt resistance of low value (at the top), and others are using a magnetic field technique (at the bottom). The shunt can be connected directly to the ADC of a Microcontroller, but as the output can be very small, most of these solutions include an amplification phase in order to match the signal to the dynamic range of the ADC. Some also have an integrated ADC, communicating with the microcontroller with a digital interface. So the difference is mostly on the level of integration that these solutions have, allowing different levels of accuracy and size. For the shunts, there are different degrees of integration whether the shunt resistance, the ADC or the output filtering are integrated. Or it could also all be made discretely for the magnetic sensing solutions it is simpler because everything is integrated. The biggest difference they have is depending on the technology they are using: Hall-effect, AMR, GMR, TMR, Fluxgate, close or open loop, and with a magnetic core or with an internal conductor. Depending on the accuracy, current range and the level of isolation, different technologies are preferable.