It's free, and is really great for making just about anything, I highly recommend it.
For 2D animation, it really depends on what you want to do. If you want to put the 2D art into a game, i would recommend you draw it with a simple paint tool such as Paint.net (http://download.cnet.com/Paint-NET/3000-... and implement it into your game, using either code or built in animators to animate it (Unity has a built-in animator, for instance).
For standard 2D animation software, I don't have any straight answer for you since I've never attempted that, but here is a list of software you might want to look into
http://en.wikipedia.org/wiki/List_of_2D_...
Hope this helps!