are you really saying that the HTML5 standard explicitly states that a block element can be contained within an inline element?
More accurately: hmtl5 now recognizes what browsers have always de facto supported: <a> isn't considered an inline element. I guess you'd have to call it a no-line element, since it doesn't
create a block, but can
contain a block.
I set a{display:block;}
No, don't do that. You may have misunderstood. But cheers to you for learning to make hand-rolled HTML and CSS instead of just grabbing a CMS and making pages without even trying to understand what's happening.
Every browser has a default way of handling any element, such as <p> <h1> <a> et cetera et cetera. The purpose of a stylesheet is to override these browser defaults. By default, a link is underlined and a different color-- generally blue at first and then purple if the user has visited it within the browser's memory. So to override:
a {text-decoration: none; color: inherit;}
will make a link look just like the surrounding text.
a:active {color: green;}
a:visited {color: #666;}
means a link is green while you're clicking on it, and then turns grey after you've used it.
I strongly recommend making up a little experimentation document. Give it a name in .html and open it in your preferred browser side by side with your text editor. Now see what happens when you change things. If you have a word processor or text editor with an "HTML preview" function, you can experiment without having to reopen or refresh the page each time you change something.
Bookmark this page:
http://www.w3.org/TR/CSS2/indexlist.html
There are plenty more pages for the different elements CSS3, but the CSS 2.1 index is the single most useful starting point. At first nothing will make any sense, but bit by bit you will come to understand what they're talking about.