That's the long answer :). The short answer is that if a method doesn't have "init" or "copy" in its name, it returns an object you shouldn't release unless you retain it first.
This USUALLY translates to autoreleased, but there are some instances in which it doesn't. [NSFileManager defaultManager] comes to mind. That object is (probably) not autoreleased, but you shouldn't release it yourself either. On the other hand, it's probably a safe bet that [NSString stringWithFormat:] returns an autoreleased string.
You should treat both cases the same way: unless you put your own retain on the object, it is only valid in the autorelease scope in which you received it. Autorelease scope is never larger than function scope, though it can be smaller if you create your own autorelease pool inside a function. Here are some examples: