Here is a quick rundown, but you can find much more info on the web.
ALSA operates on the lowest level from the things you have listed. It is what communicates with your soundcard. However it can only be used by a single program at once.
The others are only using ALSA (or alternative backends like OSS) to provide further functionality when it comes to playing sounds from multiple sources.
Pulseaudio is a “consumer-grade” audio mixer that works as most users expect: it can mix the output of multiple apps together similar to how audio works on windows or mac. It is usually compatible with media players, browsers and whatever a “regular user” would want to use.
JACK is a “pro-grade” audio mixer with more flexibility when it comes to audio/midi routing, low latency, global transport and more. It is geared towards audio professionals or hobbyists and so programs that support it mostly consist of daws, audio editors, synths etc.
In this sense JACK and PulseAudio provide the same kind of functionality (mixing multiple sources) but they aren’t designed to be used at once. However it is possible to run pulse into jack in case you really wanted that.
Guess you need Jack more than Pulse (more often the latter just gets in the way once installed) so configure alsa first on it’s own then read the JACK FAQ and try jack out. For a gui I recommend cadence instead of qjackctl.
Now Pipewire is meant to be a solution for both usecases and it might work well but I haven’t used it yet so can’t comment.