smartparens has a superset of the functionality provided by autopair. Apart from providing pair insertion (which is what autopair does) , it supports manipulating what it calls "hybrid sexps" or sexps in non-lisp modes. It provides commands for navigating, marking, joining, splitting, absorbing and more for sexps among other things.
I personally use smartparens and found that it provides some overlapping functionality with
yasnippet - ability to trigger pair insertion using a string
change-inner - select expression within matched pair
- and
paredit of course