As Jari said, $ can be part of identifier names, just like any letter of the alphabet. However, it is used in the names of generated variables, in particular for Mathematica's variable localization mechanism:
Example 1:
In[1]:= Module[{x}, x]
Out[1]= x$22099
These generated names are either of the form name$number or simply name$. They're never of the form $name. So it is really a good idea not to use $ in the middle of a symbol name, but using it at the
beginning is quite common. Many people will use names starting with a $ to (informally) indicate that they are constants. So if you read somebody's code and see a symbol name starting with $, it is likely that the author of the code meant to use that symbol as a constant.
Many built-in symbols follow this convention too, such as $MachinePrecision or $Path. ($Path is a constant in the sense that programs won't use it as a variable that is continually changing.)
Built in symbols will start with a capital letter after the $, so it's safe to use name such as $myConstant, but better not use $MyConstant to make sure you don't conflict with built-ins.