Bones animations are created in many different ways. One way is to just create each part of a character separately.. So you have Head, arm, leg, etc.
How you animate really depends on your game engine. Some engines have built in support for bones based animation systems so you need to see what they expect.
Spine 2D got a lot of attention when it launched:
http://esotericsoftware.com/ looks like a good way to create bones animations, and can export to some pretty common engines.
Bones are great for dynamic situations. You can have animations blend into a single animation... Like a character can move its head independently while playing a run animation, or you can aim a gun while jumping and running.
Additionally bones are great for performance, instead of many frames, or large sprite sheets of frame,s you have a smaller sprite sheet of a few body parts. All the animations are handled through code.
Another benefit is that you can easily customize your character with out having to completely reanimate it. So you can swap the head, arm etc. at any time with out having to go back and re-animate your character.
But unlike keyframes, bones are fairly tricky to set up.. And often not worth the time. Oh and they may not give you the desired effect, they often have a certain "look" to them.