Adblocking apps can do domain based blocking, and they can do it per app. For example app A can access google.com, but app B can't. A system wide blocker does the same thing however it can not distinguish between apps and therefore blocks a domain for every app.
However these apps block the VPN slot and so you can't use a VPN at the same time. Unless if the app also provides a VPN for you, which is rare.
Whether any of these apps or system-wide (external) blockers are of use to you or not really depends on what you are trying to block.
If you just need adblocking for the browser, then using a browser with inbuilt ad-blocking is a better choice because you can use a VPN that way as well, and they implement object based blocking.
Using a dns blocking app is useful if you want to block a specific app from reaching a particular domain while not blocking it completely. But this usecase is somewhat rare.
Another case is if you want your whole system not to communicate with a certain domain. For example you want absolutely nothing sent to facebook.com. In this example both system-wide (external) and app based DNS blockers can do it, but the app will block the VPN slot. Also using a VPN (in the VPN slot) and the "external" blocker might not work because the external DNS blocker only sees the connection to the VPN server.
As @final said, some VPNs do have adblocking dns lists, but they are not customizable (add your own domain). Good for adblocking, not good for blocking specific domains.
These systems each have some useful use cases, but it just depends on what you need and what you can sacrifice, because there is a drawback to each system.