So, in terms of altitudes…
First, there is the ellipsoid, a nice smooth shape that is based on the hypothetical equipotential gravitational surface. This would be convenient if you were flying a spacecraft, or a satellite, and a basic GPS-calculated altitude may be the height above ellipsoid (HAE).
Second is the geoid, which is an attempt to follow mean sea level (MSL), and approximate that same level over land. Now, even though you might expect sea, being liquid, to fill the oceans to the same level everywhere, that's not the case. The sea is smoother than the land, but still undulates on a global scale. Good GPS devices will use the location data to convert the HAE number to a geoid-based altitude.
Third is the barometric altitude, which will also vary according to local temperature and air pressure. GPS devices with a barometric altimeter can report this number in addition to the GPS altitude, and use the GPS altitude to calibrate the barometric altimeter.
The geoid and ellipsoid ideas of "0 altitude" can vary by +85/-106 meters. The barometric altitude can vary by even greater amounts. If you calibrate your altimeter at your local sea-level REI, which it's balmy 59F outside, then head up to the mountains and catch a 0F cold snap, your device might think you are 250 meters higher than you really are. This means with a barometric altimeter you want to be calibrating it fairly regularly.
Side note: this is also why aircraft use "flight levels" above a certain altitude; rather than worry about properly calibrating their altimeters, they base the calibration on a standard model. Exactly where the ground is doesn't matter, all that's important is that the altimeters on any nearby planes are "off" by the same amount.
-Jeremy