tempdb, as Brentz Ozar said in one of his videos, is like a public toilet. It is dirty and complicated. It look very easy to manage but there are tons and tons of article written about it. You always wonder what type of objects goes inside the tempdb. One that always popup in my head are the temp tables created using # or ##, the dreaded cursors, and anything that spill over from memory to tempdb!
Here are some links that address the capacity planning and what exactly goes into tempdb