First, never use floats or doubles if you want to represent decimal values exactly - use either integer types (int, long etc) or decimal (which is just an integer type with a scaling factor). Floats and doubles are converted internally to an exponential representation in base 2 and numbers represented exactly in an exponential representation in base 10 cannot in general be represented exactly. (E.g., the number 10 is only represented approximately by floats or doubles).
Second, in terms of precision it depends on what you need. I don't agree with your sentiment that there are never calculations where precision does not matter. You normally have a specific need that your final result is accurate to say, 3 digits. It does not make sense to look for the highest precision possible if your input has only limited accuracy - say you weigh some 5g of flour and your scale only has an accuracy to 0.5g. That said, intermediate calculation usually benefit from higher precision but something that is more important than high precision if quite often speed.
Third, when preforming a series of calculations, say within a loop, you need to know what you are doing when dealing with any inexact calculations - you will incur round-off errors and some algorithms may not arrive at an answer to any degree of precision. Understanding these issues in detail may require a course in numerical analysis. This does not depend on whether you choose floats or doubles for your calculations.
For floating point calculations I would usually go with doubles since they are more general and faster than floats. However, floats are smaller and if you need to store a lot of them they are the choice to prevent performance issue due to cache misses.
To my knowledge, floating point processing is supported in hardware for doubles but not floats, so using floats incurs a conversion to double. However, some routines would stop sooner when calculating a value iteratively when you pass a float, since this implies that you only want about 8 digits precision vs. about 16 for doubles.