It is usually even more confusing for users coming from various Linux distro's. I think it should and could be better explained or emphasized in the man pages or the Handbook.
A port allows you to adapt an application somewhat to your needs, there is not much more to it. Once you know that,
man ports
will get you going.
Coming from Linux, I started with pkg too, since its basically the same as rpm, yum and the others in Linux.
What got me to start building ports where audio applications. Installing packages of audio apps will also install the audio back ends that these apps can work with. So I soon had alsa, pulseaudio, jacks and sndio installed and running. And I had all sorts of audio problems because of that. I solved that by using ports. Config options usually allow you to choose a back end, OSS only in my case. Now all audio apps work fine with OSS only. Additionally I use
audio/virtual_oss to address inputs and outputs of an external DAC/ADC, so I don´t have to use the Windows driver for it.
For several years I build ports for all audio stuff and installed packages for the rest. Hardly ever had real problems that way. Later on I turned it around, I build everything from ports now. Except for rust, llvm and gcc. If one of these needs updating I will install the package if it's available, just to save time. I used portmaster and later portupgrade to keep ports updated. Will try synth if I have time.
The general rule (either ports or packages) is certainly valid, but it doesn´t necessarily mean you will run into problems if you start using both. Just know what you are doing by keeping track of which ports and which packages. And once you start using ports, make sure you always 1) update your ports tree, 2) have a clean building environment (no leftover work-directories) and 3) follow the instructions in
/usr/ports/UPDATING first. You will find ports a great addition to packages.