The first tingthing IMO are smart pointers. Integration into new code is simple, and is usually not a problem for existing code. They make memory management easy, and work for many other ressourcesresources, too.
C++ gives you the power to manage your own memory, and smart pointers let you (mostly) wing it when you don't need to.
The second would be - asbe—as you mentioned - functionmentioned—function objects, they close a big gap within C++ that is traditionally solved through inheritance, which is to strong of a coupling in many cases.
I have only little experience with boostBoost outside these two, but most of the remainder is fairly "situational" - you may or may not need it. Get an overview over the libraries, and see what you need.
boost::any and boost::variant are good of you need a variant data type, with two different approaches.
boost::regex if you need some text parsing.
boost::thread and boost::filesystem help you write portable code. If you already have good platform specific libraries, you might not need them - but they are better than API or C++ level in any case.
Maybe you like my introduction to boostBoost smart pointers, and a rather unorthodox use for them.