Personally I have never really needed custom fields in a Wordpress setup. Although this might be more laziness than practicality.
The other reason might be because I have always started with a pretty solid theme that does provide a few of the most used "custom post types". Since I use Kadence Virtue for basically everything, and it includes testimonials, project and other types already I rarely reach for something else.
Not to mention Kadence has one of the most useful block additions for Gutenberg. As much as people dislike Gutenberg, it is still the premier method to build visually and not have to reach for a page builder such as SiteOrgin, Beaver or Elementor.
However why you would reach for a page builder in a free theme is specifically because they provide nifty content blocks and almost always a very powerful grid system. If you are making any kind of page that is not a blog post , you need a proper grid system.
So enters Advanced Custom Fields
As I said I have never really needed it, but recently I worked on a project that uses it foundationally. The provided "theme" is almost entirely built from the bottom up using Advanced Custom Fields. Fortunately it seems they kept the main theming quite minimal but go headlong into custom Gutenberg blocks.
It is the custom blocks that I find very interesting, and quite useful. I have never really cared for complete custom content types , since they can just be a hassle to set up and there is almost always a plugin that will give enough features and then some. On top of that a plugin is tested by thousands of users and maintained.
Using it for blocks though, I like that approach because I am a big fan of making my own UI bits and pieces. I actually never dived into how simple it can be to make my own Gutenberg block to get the exact layout I wanted.
ACF (Advanced custom fields) though is a premium plugin though, with one of the core valuable features being the repeater element. This allows you to make sections and have them be added to easily by the user. The blocks feature is also a premium feature... So....
FREE Options
Pods Framework - Grow Beyond Posts & Pages - Content Types and Custom Fields - Pods Framework
PODS is one of the oldest open tools that does what ACF does. I have looked at PODS before but quickly dismissed it purely because I had no interest in having to write custom code for layouts.
Obviously, these days I don't mind writing the code because it just makes life simpler if I write it and tell the stupid thing exactly what I want. It does however seem to have improved a bit more providing a lot more control from the UI directly which can be great for simple quick fields and templates.
The framework is quite old and this can also be felt in the interface and even code structure but there aren't many limitations, so it works great for anything from small quick and dirty content modifications to larger structures like full post types with advanced content loop and creation features.
You still need to get your hands dirty to a degree but far less than it use to be, and I think even less than something as premium as ACF.
Carbon fields
Home - Carbon Fields
Carbon fields there is no choice but to jump into the code.
The main benefit of using Carbon Fields is the complete control you inherently gain from being in the code directly. Their code is also a lot more modern so a lot of the boilerplate is handled for you. Which is usually why I hate getting into Wordpress code to begin with ,since Wordpress is so old almost everything feels verbose and has a ton of horrible boilerplate to do for even the smallest things.
Wordpress documentation is also horrible albeit not as horrible as Drupal.
Anyway if you are going to just stick to one paradigm, and not context switch too much then in the spirit of separation of concerns Carbon Fields is a great options. Where with ACF and PODS specifically it can be rather irritating to be in the code but then have to go to the interface to actually do setup and connection then head back to the code only for presentation.
I do think I will still try PODS rather , if only to quickly iterate in the ui and when I feel I know what I need or I need more I can jump to full control via code. When that feels too verbose I can move over to Carbon Fields with a much better understanding of the problem I wish to solve.