#$ does “nothing”, as # is starting comment and everything behind it on the same line is ignored (with the notable exception of the “shebang”).
$# is a variable containing the number of arguments passed to a shell script (like $* is a variable containing all arguments).