A branch is a series of changes ("commits") to some software project. All, or almost all, changes eventually make their way on to the "main" (or "master" before the PC Police pounced in about 2020) branch. Often someone making a new feature or fixing a bug will do their work on a branch only they are adding things to, ignoring for a time what is happening on the main branch. Once the work is complete and checked they will merge it to the main branch -- or perhaps first to a testing / QA branch.
From time to time enough new features will have been added or bugs fixed to make a release. The current tip of the main branch is tagged wth the release name, and a new maintenance branch started. General development will continue on the main branch, and only important bug fixes will be made on the release branch.
This happens for every different project. The Linux kernel is one such project. Binutils is another. Gcc is another. glibc (and alternatives such as musl or newlib) are others.
From time to time, various organisations take some set of versions of various projects, test them together, and make a "distribution".
The simplest distribution is pretty much just the kernel and a statically linked busybox. Obviously some such as Fedora or Ubuntu are a lot more comprehensive.