To rattle off a quick answer to the title question, before I read your post...
White space is never important in HTML or CSS until it is.
<ahref = "#"title = "Uh huh..."> link text </a>
Rule: white space before attribute names in tags.
Guide: no white space around operators in attributes unless inside the quotes.
Note: White space is ignored in text nodes so wasted bandwidth.
<a href="#" title="Uh huh...">link text</a>
In CSS the white space is critical, where it is expected, and ignored otherwise.
What makes this not work is the missing white space.
A space between selectors indicates descendency.
ul li p
is a paragraph in a list item in an unordered list. Grand-parent > Parent > Child.
Take the spaces out and it is gibberish.
font:normal 1em/1.5em black Arial;
The spaces separate properties.
For readability we could write,
font: normal 1em/1.5em black Arial;
Back on HTML,
<span>will all print</span>
<span>on the same</span>
The hard returns (which are not HTML linebreaks) are given a space character by the HTML parser so these lines will appear as normal prose text on one line.
This text will all print on the same line.