When should I normalize data? I often see that numeric values in machine learning is scaled to 0-1 range. Why is it better?

I have some temperature values in my training set.
What if I will have some values to predict that will be outside training set values?

I mean that eg in training set I will have range of temperatures like 5-20 and MinMaxScaler will fit to these values, and then I will have 25 to predict.
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.