Capsule-capsule overlap can be detected by treating the capsules as line segments with radius/thickness.
But I think you need something more complicated than capsule-capsule intersection to truly solve the problem (continuous collision detection between dynamic objects).
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.
I haven't worked on collision detection since the 1990s. But convex hull collisions are very fast with GJK. And the space swept by translating a convex hull is itself a convex hull. So continuous collision detection (no fly-through) is possible that way. But that's usually overkill. Objects that move more than their own dimension in one frame time are usually bullets, and those should get special handling.
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...