As far assembly is concerned, $ does mean hexadecimal. For instance.
Loads 10 decimal (A hexadecimal) into accumulator (# here means indirect value, it doesn't load any RAM address), while.
Loads 16 decimal (10 hexadecimal) into accumulator.
Numbers can be also marked as binary, which is marked with %. For instance.
Which loads 1010 binary (10 decimal, A hexadecimal) into accumulator.
Generally, $ is used for addresses (for instance STA $19 stores the power-up that is in accumulator), because debuggers usually prefer hexadecimal form for addresses which means that programmers will see the same thing in debugger as in the code and it's easier to tell how many bytes will be used for representing given value.