Is it normal for location to be a bit off?
Yes. Civilian GPS accuracy is ~3m IIRC. Indoors your accuracy can be reduced if you can even get a fix in the first place -- in which case your device has to fall back on less accurate methods of determining your location.
I've waved the phone in a figure of eight in both maps apps and the compass apps to try and re calibrate my iphone but I still get the same results.
Calibrating the compass won't have any impact. Consider what a compass does.
However the entire point was that its unlikely that the phone will be using GPS (or A-GPS) indoors to get a location fix, it's more likely to be using wifi and cell tower triangulation; which almost all modern smartphones are capable of doing.
The likelihood depends on the construction of the structure, the exact location within the structure and the sensitivity of the GPS receiver. I've had GPS fixes indoors and I've failed to get GPS fixes indoors.
Pretty much what I said
it uses information from cell towers to obtain a better lock on a satellite.
You said:
Phones usually have A-GPS (the iPhone does), which means they can use cell towers and WiFi to get position too
A-GPS uses cell tower triangulation/network information
Wifi and tower triangulation have nothing to do with aGPS. They are part of location services. The latter half of what you said could be true but it's a vague statement. In any case, it's a common misunderstanding and a fair number of people misuse "GPS" to mean any method of determining location. A handy rule of thumb is that if it doesn't use the GPS satellites it isn't GPS.