shaders – Normal matrix in plain English

I am in the shader language with Webgl and GLSL.
I saw a tutorial on a normal matrix and I do not really understand it.
I mean, I think I agree with the calculations such as:

modelViewMatrix = mat4.multiply (camera.view, modelMatrix);
inverseModelViewMatrix = mat4.invert (this.modelViewMatrix);
normalMatrix = mat3.fromMat4 (inverseModelViewMatrix);
normalMatrix = mat3.transpose (this.normalMatrix);

But why do I need it? Where can I find a case where I can see the difference between using it and not using it? Ot when do not I need it?

Thank you!