If it's a library that someone else will use, I try to play as conservatively as possible, and I fully expect that despite my best efforts those developers will uncover lots of bugs regardless.
If it's a mission critical application, I'll also be conservative. The more pain there is in fixing things later, the more careful I'll be up front.
When I'm writing a game, I'll play it more fast-and-loose. So long as any glitches don't crash it or open an exploit or ruin the user experience, it's usually an acceptable trade-off.
When I'm writing stuff for myself, I go crazy, trying out all new fads and methodologies just for the hell of it. This way, I learn new things and get enough experience with them to mark them as conservative-safe and liberal-safe.
My only sticking point is this: If someone competent cannot follow your code, you haven't documented things properly.