When should I normalize data?
It is actually depends on the algorithm you are using. 
For example, for random forests the ranges don't matter, since one feature is never compared in magnitude to other features. It's only the range of one feature that is split at each stage.

But on the other hand SVM or Logistic regression will probably do better if your features have roughly the same magnitude, unless you know apriori that some feature is much more important than others, in which case it's okay for it to have a larger magnitude.