In terms of units these are the standard units used for various things:
http://www.ros.org/reps/rep-0103.html
The next question warrants a really long answer. The short answer is that the odomtery topic is the (estimate/dead-reckoning) distance/position from the origin where the robot started. So if you told the robot to move 1 meter in the x direction, your odometry topic will have messages published reflected that, a pose of (1,0).
However, your robot more than likely is not perfect. So there is also something known as the odometry frame. Your odometry topic is actually published in this odometry frame. The odometry frame has a parent frame called the map frame. If your robot could move exactly, these frames would always be directly on top of each other. If your robot doesn't move perfectly, an algorithm like AMCL (or SLAM) will use current sensor data, the map data, and odometry data to shift the odometry frame away from the map frame to localize the robot more accurately than simply using the odometry topic.
A simple example would be as follows (always thinking of things in the global map frame). You have your robot up on blocks so that it can not move at all. You tell it to move 1 meter in the x direction. So your odometry topic will have something like (1,0) published on it. But since your robot can not move, the correct position of your robot will still be (0,0). AMCL (or SLAM) will actually shift the odometry frame so that it is (roughly) centered at (-1,0). Since your odometry topic is in the odometry frame, when you evaluate (using TF) the position of your robot in the map frame, you'll actually end up with a coordinate in the map frame of (0,0).
I guess the important thing to remember is that the odom topic and frame are two different things.