Putting $ inside square brackets doesn\'t work for grep.
~ $ echo -e \"hello\\nthere\" > example.txt
~ $ grep \"hello$\" example.txt
hello
~
You can, however, use $ in a parenthesis grouping, which facilitates the use of | (or), which can accomplish the same idea as a square bracket group.
Something like the following might be of interest to you:
~ $ cat example.txt
hello
there
helloa
hellob
helloc
~ $ grep "hello\($\|[ab]\)" example.txt
hello
helloa
hellob