The Rapier project and its documentation[0] might be of interest to you. Rapier has a more sophisticated CCD implementation than most (popular in gamedev) physics engines.
> Rapier implements nonlinear CCD, meaning that it takes into account both the angular and translational motion of the rigid-body.
[0] https://rapier.rs/docs/user_guides/rust/rigid_bodies#continu...
Another trick is to rotate both so that one of the move directions is axis-aligned, and then the problem looks more like AABB.
You can check this site with nice animations which explain how to compute the distance between segments : https://zalo.github.io/blog/closest-point-between-segments/
One more generic way to compute the distance between shapes is to view it as a minimization problem. You take a point A inside object 1 and a point B inside object 2, and you minimize the squared distance between the points : ||A-B||^2 while constraining point A to object 1 and point B to object 2.
In the case of capsules, this is a "convex" optimization problem : So one way of solving for the points, is to take a minimization (newton) step and then project back each point to its respective convex object (projection is well defined and unique because of the convex property) (It usually need less than 10 iterations).
In geometry, we often decompose object into convex unions. One example is sphere-trees, where you cover your object with spheres.
This allow you to use fast coarse collision algorithm for spheres to find collision candidates of your capsules : You cover your capsules with spheres (a little bigger than the thickness) so that the capsule is inside the union of the spheres.