CSS is quite an intuitive language..lets take the things you mentioned and let me explain you what they mean:
#menu h2
when you create an html element on the page you can give it an id like the following:
<div id="menu">
</div>
elements in CSS can be accessed either by using their IDs, class names (ill explain that in a bit as well) and also by element types (p, div, a, ul, etc). So basically what #menu h2 means is the following:
get the element which ID is menu (notice that by saying #menu alone you will get any element with ID of menu). You can also specify that you want to select only div elements with ID menu which is done as following:
div#menu
so this code will select a div on page which has an ID attribute set to menu.
Now further on by separating elements in CSS this is what happens:
#menu h2
what this code does is following. Get the element on the page whose ID is menu and select an h2 element inside of it and apply the following layout rules (this is inside the parenthesis).. So something like this:
#menu h2
{
color: #000; /* Sets the font color of the h2 element to black */
font-size: 24px; /* self-explanatory */
font-style: italic; /* set the style of the font to be italic letters */
}
Anyways to learn more you can visit the official website of WC3 and read the basics of CSS.. If you're to start learning web developing CSS is a must known tool and everyone, absolutely everyone you ever work for will demand you to have good knowledge of it.
Best of luck,
Regards.