The hardware map is how you get access to the hardware on your robot. The hardware map cannot be used before the robot is initialized. If it is, the robot will throw a NullPointerException.
Getting Access to hardwareMap
The hardwareMap variable is a field of any class that extends OpMode or LinearOpMode. In other words, the hardwareMap object can be accessed from any OpMode you create. For an example of this, look at 2101 OpMode vs LinearOpMode.
I repeat again, the hardwareMap CANNOT be used before the robot is initialized.
Using the Hardware Map
Getting a motor or a servo is relatively self-explanatory as long as you already have a grasp of Java:
DcMotor motor = hardwareMap.get(DcMotor.class, "nameOfMotor");
Servo servo = hardwareMap.get(Servo.class, "nameOfServo");
Here, we get a motor and a servo from the hardware map using their names that were set in the driver hub.
That's about it for the hardware map. If you want to know how to use DcMotors or Servos, look at the JavaDocs for them.