If you seperate along the Minimum Translation Vector, you could be getting some very jerky behaviour.
I think you should do your projection backwards along the movement path, which lead to the collision.

Then you can resolve your collision physics (change of movement direction ...) and move the object that collided the rest of it's new movement for the partial timestep still missing.
If you do that, then 2 moving objects is straightforward:
You subtract their velocity vectors and calculate how far you would have to move the first of the two backwards along this combined velocity to avoid the collision. Then you calculate the timelength that represents and actually move both of them backwards along their orginal velocities.
edit for clarity:
For two moving object if the first moves with a velocity of v1 and the second with v2, then resolve the collision hypothetically with a velocity of v=v1-v2 (vector valued) for the first object and 0 for the second objects velocity. You get a negative timestep dt, which you would have to move the first obeject backwards. Multiply this timestep with the actual velocities, v1 and v2, to move both object backwards.