Another option, which may or may not have been mentioned, is that you can use the stencil buffer to perform collision detection. If more than one object occupies the same pixel, then you can be sure there is collision between them. Then, once you examine the stencil buffer and determine the places where more than one fragment was rendered, you can then determine which objects are located at these positions, and then the collision will be known. Not saying this is the only way, but is ONE way if you are looking for an absolutely exact collision (which you will not get when using 2D sprites with AABB approximations).
A second option, is tesselate your objects into triangles and create a convex hull. A convex hull is a much tighter approximation than a simple AABB. This will give you also, a better approximation. Convex hull collision is a well studied area, you should be able to find an algorithm for collision. If you go with this method however, you should first cull out results which do not pass the AABB test, as convex hull tests are much more expensive.