I generally use
*.txt for general text files,
out.build.NN for output from a build,
*.lst for a newline delimited sequence that'll be fed into a program (like
programname.log for output from long-running programs. And I use a lot of numbers (a'la
out.build.NN) if I will be successively running the same program multiple times. But this is just my own convention.
I generally use lowercase since that is most common in UNIX/Linux. I use hyphens, underscores and periods and stay away from "special characters" (like space, tab, return char). The size of the filename depends on what you are trying to get. If you'll have file for a long time, it may be better to have a slightly longer filename to help remember it's purpose.