Great article linked by @charmn-one and a good response from @me1958424. The way I think of applying scale (and transformation / rotation) is establishing new standard transformations of an object.
Take for example an earth model. If I were to create a default sphere in Blender then my “earth” would only be 2 meters across. In order to be an appropriately sized earth I would have to scale my sphere up by a factor of 3.0675 million. Meaning I would type 3067500 in the X, Y, and Z scale values.
However Blender technically still thinks that earth model is a 2 meter sphere scaled up, which is a false premise. This is why a lot of operations in Blender go wonky when scales aren’t applied as they should be. The true premise is that the earth is *actually* that big by default. So I would want to apply the scale which tells Blender that my earth model is *actually* that big, making the scale values 1,1,1 while leaving the sphere the same size. This is where the dimension values are handy for differentiating scale and dimension.
I hope that’s a somewhat concise / practical explanation.