As mentioned in the comments, it uses fuel gauge. There are several algorithms for Li-Ion chemistry, and the gauge might use one or more of them.
The most basic one is the Columb counter. The fuel gauge has a current shunt with an amplifier and measures the consumed current, sums it over time and compares it to the programmed battery capacity.
An addition to the Columb counter is impedance tracking, in which the fuel gauge tries to measure the battery's impedance. A lithium ion cell has a specific impedance for each state of charge, so an estimate can be made regarding the amount of charge left.
The fuel gauge usually has its own temperature sensor to compensate for various temperature related effects.
It reports its status via I2C (SMbus in some cases) to the main processor.
The answer is, of course, neither extreme, but somewhere between the two.
You can tell the state of charge of a cell from voltage
If a cell measures 1.5v off load, it is fully charged. You should not charge this cell further. If it's 1.5v on charge, on a low current, then it's pretty much fully charged.
If a cell measures 0.9v off load, it is fully discharged. You should not discharge this cell further. In fact, you should have stopped discharging when it was 1v, on load.
By all means use a multimeter to measure the terminal voltage of a cell that's finished charging. It will tell you there's no point in charging the cell any more. It won't tell you whether the cell now contains 100%, or 80% of its original capacity, only a discharge test will tell you that.
You cannot tell the state of charge of a cell from voltage
If a cell measures 1.2v on or off load, you cannot tell where its state of charge is from 10% to 90%. If you stop or start charging or discharging, then you find the terminal voltage can wander 10s of mV in the first few seconds, then more 10s of mV over the few minutes, in a way that's not modelled by the terminal voltage being dependent on charge alone. With the flatness of the discharge curve, that dependence on history pretty much destroys any predictive power that measuring voltage alone might try to claim.
This is why practical battery metering systems use a gas-gauge IC (coulomb counter) to track the state of charge directly.
Best Answer
It's better to measure charge in and out to determine charge state. You can get ICs that do this for you, e.g. http://www.ti.com/product/bq27000 : it works by having a tiny ammeter connected on the output of the battery pack.
It's usually possible to determine "fully charged" from the EoC "end of charge" conditions of the battery, and the charging logic must make this decision to stop charging.
Lithium battery chemistries do not like being completely discharged; usually the battery pack has extra circuitry that disconnects it at a particular voltage drop. The ones I've been using do this at 2.8V.
The variation in voltage from "charging" to "fully discharged" is just something that you have to design for. Usually there will be a buck/boost converter that turns the actual battery voltage into a steady 3.3V or whatever voltage is needed for the logic.