Question: It's clear that one shouldn't use floating precision when working with, say, monetary amounts since the variation in precision leads to inaccuracies when doing calculations with that amount.

That said, what are use cases when that is acceptable? And, what are the general principles one should have in mind when deciding?

Answer: 
Most real-world quantities are inexact, and typically we know their numeric properties with a lot less precision than a typical floating-point value. In almost all cases, the C types float and double are good enough.

It is necessary to know some of the pitfalls. For example, testing two floating-point numbers for equality is usually not what you want, since all it takes is a single bit of inaccuracy to make the comparison non-equal. tgamblin has provided some good references.

The usual exception is money, which is calculated exactly according to certain conventions that don't translate well to binary representations. Part of this is the constants used: you'll never see a pi% interest rate, or a 22/7% interest rate, but you might well see a 3.14% interest rate. In other words, the numbers used are typically expressed in exact decimal fractions, not all of which are exact binary fractions. Further, the rounding in calculations is governed by conventions that also don't translate well into binary. This makes it extremely difficult to precisely duplicate financial calculations with standard floating point, and therefore people use other methods for them.
From [Wikipedia](http://en.wikipedia.org/wiki/Floating_point): 

> 
> Floating-point arithmetic is at its
>  best when it is simply being used to
>  measure real-world quantities over a
>  wide range of scales (such as the
>  orbital period of Io or the mass of
>  the proton), and at its worst when it
>  is expected to model the interactions
>  of quantities expressed as decimal
>  strings that are expected to be exact.
> 
> 
> 

Floating point is fast but inexact. If that is an acceptable trade off, use floating point.