Why is this layer freezing required?
It's not.
What are the effects of layer freezing?
The consequences are:
(1) Should be faster to train (the gradient will have far less components)
(2) Should require less data to train on
If you do unfreeze the weights, I'd think your performance would be better because you are adjusting (i.e., fine-tuning) the parameters to your specific problem at hand. I am not sure what the marginal improvements are in practice, as I have not experiemented much with fine-tuning (like are the improvements typically a 0.01% reduction in error rate? Not sure.)