この3つの関係は、まず commit オブジェクトがあって、それを指す branch があって、さらにその branch を指す HEAD があるというものになっている。つまり、こんな感じ。
commit オブジェクト ← branch ← HEAD
HEAD は、現在地、すなわち現在の working directory の内容を指している。
git は、commit オブジェクトが中心にあって、その他の概念は commit オブジェクトを指すポインタのようなものと考えると、理解しやすいだろうか。
この辺の話は、以下のページがとても分かりやすかった。
https://www.r-staffing.co.jp/engineer/entry/20201225_1
ちなみに、tag も commit オブジェクトに付けるものなので、やはり git は commit を中心として考えるのが良い。