To add to Gonzalo's answer, the reason why periods specifically shouldn't be used in node names is because they already have a special meaning when dealing with nodes. When you name a node, as in \node (mynode) at (0,0) {hello}; then TikZ sets a set of "anchors" around the node. The format for referencing these anchors is nodename.anchor. So we have mynode.north and mynode.north east, and also angular anchors such as mynode.90 and mynode.-10. The parser looks for the . in the reference and when it sees something.something else then it interprets that as nodename = something and anchor = something else. This happens before it looks to see if nodename actually exists. Then it tests for existence, and if it doesn't find it then it bails out.
Commas are also pretty easy to explain as (x,y) is the usual syntax for coordinates, and x and y don't need to initially be just numbers.
Parentheses would probably also confuse the parser as they are often used for special syntaxes (especially with the calc library).
Colons are used in the polar coordinate syntax, so that explains why you should avoid them.
The reason that:
\path node (X\x Y\y) at (\x+\y-1, \y-\x) {};
doesn't work is something else. This is because TeX swallows spaces after a command. So the node name gets set to the expansion of X\x Y\y which is, for example, X-1Y0 as the space after \x is eaten up. To get an actual space, you should use the \space macro or put an "empty" token after the \x. Thus either X\x\space Y\y or X\x{} Y\y will do.
Here's a bit of code that might be useful for you.
\makeatletter
\tikzset{%
show node name/.code={%
\expandafter\def\expandafter\tikz@mode\expandafter{\tikz@mode\show\tikz@fig@name}%
}
}
\makeatother
If you put that in your preamble, it puts in a little bit of code that displays the node name in the log. Use it as \node[show node name] ....
pgf. – Gonzalo Medina Sep 12 '11 at 16:25