includes just the interaction of "a by b", and does not include
the main effect of a, nor the main effect of b. By contrast, the command

. logistic y a##b

includes the main effect of a, the main effect of b, as well as
the a by b interaction. It is equivalent to typing

. logistic y a#b a b

Incidentally, if the variables are continuous, rather than
categorical, Mike's description is right, i.e. c.a#c.b only enters
the interaction term of a*b and not the lower level effects. But by
default, Stata assumes the crossed variables are categorical unless
you indicate otherwise, and the # and ## notations produce different
parameterizations of the same model.

These factor variables are nice but make sure you understand what
parameterization you are getting and how to interpret it!!!
Personally I think there is much to be said for explicitly including
the main effects so I can make sure they are there and to make my
commands easier to read, i.e. I prefer

logit y i.a i.b a#b
over
logit y a##b

The following illustrates how the c. notation changes things. In the
first syntax, you only get the interaction term, in the other two you
get both the interaction and the main effects.