build.xml and *.properties are part of the
Apache ant build system.. This is like a scripting language for building binaries and deploying them. WPILib uses Ant for deploying code to the robot, primarily.
build.properties is where the variables for the script are stored. build.xml contains the actual script. The reason to separate out variables is so that they can conveniently be in one place, and easily configurable.
In theory, you shouldn't touch things in <user profile>\wpilib (such as wpilib.properties) because the WPILib eclipse plugin overwrites them when you start eclipse (or, I assume, when you change WPILib plugin settings).
The ${} notation is special Ant notation that inserts the specified variable from build.properties into the attribute.