Implementing skeletal animation is very easy.
You form a hierarchy of nodes (which are usually bones, but more things can be used, e.g. particle emitters, light sources, attachment points, etc.), and then you follow it recursively each time you want to update.
For each node you get its local space matrix transformation, and if it has a parent, you multiply the local space matrix with the parent's world space matrix to form this node's world space matrix (if there is no parent, the local and world matrices are equal).
It might sound a little complicated if you never touched matrices, but it's very simple.
The hard part is actually getting the animation data. Since most games tend to have different needs, they also tend to make their own formats. File formats are one of those fields where reinventing the wheel is very common.
For example, do you want only sprite sheet animations, or also skeletal animations. Do you want bounding shapes for collisions, or not. Do you want to be able to change images dynamically while animating, or not. How do you sort the nodes into layers (only relevant to 2D). Can you run multiple animations with blending or not? Do you want to support dynamic animations or not? (and if so, are you going to implement IK, or is FK enough?).
The list can go on endlessly, and it really all depends on the game.
I don't support formats that try to satisfy everyone by allowing "anything and everything" in them, like Collada. It just turns out a big mess.
And after all that, I am not sure what place skeletal animation has in 2D games. I wanted to experiment with it for years, but somehow never got to it.
Using it to generate a sprite sheet, sure, that's very nice. Using it for the animation itself on run-time, that should be experimented with. If one thing is sure, its that it will completely change the "feeling" of the game.