Answer #1: No.
Semi-colons are required only between declarations.
A declaration-block (also called a
{}-block in the following text) starts
with a left curly brace ({) and ends
with the matching right curly brace
(}). In between there must be a list
of zero or more semicolon-separated
(;) declarations.
Source: http://www.w3.org/TR/css3-syntax/#rule-sets
The value of the style attribute must
match the syntax of the contents of a
CSS declaration block (excluding the
delimiting braces)
Source: http://www.w3.org/TR/css-style-attr/#syntax
Since you have only one declaration, there is nothing to separate, so no semicolons are needed.
However, the CSS syntax allows for empty declarations, which means that you can add leading and trailing semicolons as you like. For instance, this is valid CSS:
.foo { ;;;display:none;;;color:black;;; }
and is equivalent to this:
.foo { display:none;color:black }
Answer #2: No.
A declaration is either empty or
consists of a property, followed by a
colon (:), followed by a value. Around
each of these there may be whitespace.
Source: http://www.w3.org/TR/css3-syntax/#declarations
You can add spaces in order to improve readability, but they have no relevance.