$ means “end of digits” and is used for a more specific match. If you have two dial-peers with the same pattern and one with $ and the other without $, then call routing logic will always match the one with $, because that is more specific. Even if you give a lower preference to the dial-peer with $, still it will be matched because by default the dial-plan hunting algorithm is more specific match first and then preference.
dial-peer voice 10 pots
destination-pattern 1000
port 1/0/0
dial-peer voice 11 pots
destination-pattern 1000$
port 1/0/0
preference 5
In this case, always dial-peer 11 will be used to route calls to 1000, even though it has a lower preference.