apt is a newer, more user-friendly front-end for apt-get and apt-cache.
apt = combines commands like install, remove, update, upgrade into one tool, with prettier output
#apt-get = older, lower-level, more script-friendly
For normal use, just use apt now.
For scripting where 100% backward compatibility matters, use apt-get.
These days, apt is for humans whereas apt-get is for scripts. apt's output is designed for humans and may change between releases, whereas apt-get is guaranteed to remain consistent to avoid breaking scripts.
apt combines several commands together. For example, you can use it to install packages from both repos and local files (e.g. apt install ./foo.deb) whereas apt-get is only for packages from repos and you'd need to use dpkg for local packages.
apt is for like when you want to, and apt get is the other way to get the apt. And then if it doesn't, sudo apt will, or then sudo apt get. Like if you're just doing an apt, and then you also need to apt get, you can.
Me, I'm old, so I just keep using apt-get, because that's all we had back in the day, and I never bothered to learn what's the big deal about apt. It's just a frontend, isn't it?
I know about these and git and flatpaks and snaps and can definitely explain them all to you! But unfortunately, I just remembered I left my oven on...