As you say, it is an endothermic (energy-in) reaction that takes in energy from its surroundings to complete the chemical bonds. This uses up much of the free thermal energy within the pack lowering the temperature of the pack below initial room temperature. When placed on a sore (muscle?) body heat reheats the pack while cooling the body.