Mentioned in the comments, but another extremely useful feature is if you type ctrl+r and start typing a command, it will give you the last command you ran that contains that substring.
This is the main way I use the history, other than just cycling through the last few commands with the up arrow. I've just never found the bang commands useful enough to be worth remembering for the relatively few times they would be useful. ADDED: Note that I have a pretty large .aliases file that I have profile run when I log in. Any complicated command lines that I run at all frequently get aliased and added to the list. Or for longer lines I convert them to a script in my $HOME/bin.