you'd need to run a wire directly to the battery output inside the pack to measure the state of charge.
So you are saying to read the 3.7volt battery directly by hacking under the pack? but then about the reference voltage I need to have the same 3.6/3.7 at the VREF too and as such need to run my arduino on the same 3.7/3.6 voltage level! if I take 3.6 or so voltage while running Arduino with 5v @ VREF then in that case I need to calibrate values!
Yes, you need to read the 3.7V battery voltage from the pack; the circuitry of the pack is boosting the battery voltage to a stable 5V output so reading that 5V output alone will never tell you anything about the charge on the batteries.
You lost me with your reference question, though. By default the Arduino's reference is going to be 5V; 3.7V read from the batteries would result in an analog read somewhere around (1024 * 3.7/5 =) 757.
My point about bridging Vin to an analog port won't work because, in general, either:
1) Vin will be higher than 5V in which case you'll wreck your analog pin.
2) Vin will be equal to 5V in which case reading it has no useful purpose.
The Arduino treats the USB voltage input as a de-facto "5V" even if it's not
exactly 5V. That input voltage is the default reference voltage.
(sorry, I think I'm still doing a poor job trying to explain this)