I've been searching the internet and I can't find a good question to this so I believe I have a fundamental misunderstanding on what they are.
Is the only difference that in gitflow there is a release branch for your "not released yet" changes and in trunk based there isn't one?
Because for either method, you are going to need some way to identify where "production" is - in gitflow that's via the main branch and in trunk based development, that's via a tagged commit.
And wouldn't for whichever method you choose, if a hot fix is required for production, isn't that fix going to need to branch off the tagged commit or the head of the main branch? And then afterwards, you are going to need to merge those hotfix changes with your release changes.
It seems either way it's going to end up the same. I don't understand why gitflow encourages long lived feature branches. That sounds like a problem that can happen with both trunk or gitflow.
I also hear of people complaining that in gitflow it's common to get merge conflicts when merging your release changes into main. I don't understand how that can happen unless you're already doing something wrong. There should never be conflicts because the only branch that ever gets merged into main is release.
What fundamental differences am I missing here?