The OBBs have a position(x,y), a velocity(x,y) and an orientation(Matrix). Given periodic updates, the OBBs must collide with each other, returning the fraction of the move tha
You say 2d, but also mention 3d as being more complex. For collision detection, you basically want to test if two shapes intersect each other. In 2D, with bounding boxes, these are rectangles. You'll need to use an algorithm to see if the rectangles intersect and also check if one is completely contained within another (3 tests for the simple algorithm). For 3d, these are cubes. Same thing. Look at this matrix of object-object intersections and find the ones you want. Check for intersection of the objects themselves, and also wither one is completely contained within the other.
This procedure can extend to not just bounding boxes, but also bounding speheres or to actual objects themselves in convex bounding hulls, polygons, or complete 3d objects. The end result is, as the objects progress through space and time, whether their surfaces collide or whether they are inside each other. In the case where your granularity is too coarse and, in the situation you are modelling, they should collide, but they end up moving past each other, you should do an additional ray bound's intersection test to see if some central, weighted point in an object intersects the bounds of the other.