<html> - typically only add what you absolutely have to
<body> - again add judiciously
As your project grows the CSS specificity can and will come back to bite you if you're not careful.
Some more details and resources you may find useful
HTML is highly permissive, there are tons of ways to accomplish a task, espeically in layout. This generally leads to lots of opinions about what is "best". For me I turn to people that are well respected when looking for a starting point.
In this instance I'd start with Normalize css. It is not the "end all, be all" but I've found it to be a good place to start. Plus when you look at the normalize.css file it has lots of very good comments that help explain the choices that were made. It isn't going to tell you what you can/can't put in, but I think it does a good job of sorta laying out what a level base can look like.
After that your project will probably want for some structure. The structure of one's HTML and CSS will go a long way to understanding how and why choices are made. One source of "good code smell" is SMACSS, it's a structure I'm working on putting in my work flow. SMACSS is not the only solution, but it can help you understand your project and how to put good bones under it.
If you are interested there are several other good CSS structures to look into: OOCSS & BEM
Finally I like to see how other working professionals do their work. Several major sites have put up posts about how they work, one that I particularly liked came from Trello's blog. Looking at things like this is good because it's not just the theory, it's the toughts of people using these tools day to day to solve real problems on real sites.
None of these alone will solve the question of "What to do put in/how to style
<tag name> ?", but they will serve as guide posts that will lead you to the solution that works for you, your team, and your project(s).