Is the crystallization of a heat pack the same as the crystallization of freezing water? If so, why does one generate heat where the other does not?
They are similar, though not exactly the same.
Heat packs usually contain sodium acetate. The solubility of sodium acetate is temperature dependant, so as you heat a mixture with water the sodium acetate goes into solution then as you cool it the sodium acetate comes back out of solution. In it's usual form crystalline sodium acetate has three molecules of water bound to each molecule, and above 58C this is enough water for a solution to form. So solid crystals of the trihydrate will form a solution above 58C then crystallise again below 58C.
The sodium acetate solution can be supercooled to well below 58C, so it can exist as a supersaturated solution at room temperature. Triggering the crystallisation will cause the supersaturated solution to rapidly crystallise, and as it does so the heat of crystallisation is released and the pack heats back up to around 58C.
A very similar thing happens with water. You can supercool water to well beow freezing - I think you can get as low as -50C with very pure water. If you take supercooled water at -50C and disturb it, the water will rapidly freeze and as it freezes it gives off latent heat of fusion and the temperature rises back to around zero.
We don't think of freezing water being a heat pack because we think of 0C as cold not hot. However if you were e.g. an Inuit then you could indeed use water as a heat pack. Leave it outside the igloo to supercool, then when you bring it inside it will freeze and heat back up to 0C.