> Custom authentication
You can most definitely authenticate requests based on signed tokens and the like, meaning you don't necessarily need to reach any other component in the system.
> personalize ads
Same here. You can most definitely pick different adds depending on some cookie value or such, no need to reach anywhere. Even if you want to track what ads you've served, that can be done _after_ the response is sent to the user, meaning the extra latency of going to your persistence layer isn't perceived by the user.
> localize content
Again, you can have your translations in your edge function (or some edge cache if that platform supports it) and apply them at the edge. Admittedly this sounds like the shakiest use-case.
> intercept and transform requests
You can implement redirections, security headers, etc. in this layer. No need to go to your persistence layer.
> perform split tests
Same idea here. You can have multiple versions of (cached) pages and serve one or the other depending on the user's cookies, ip (country?), some frequency, etc.
You may be doing all these things from your backend layer, which is arguably easier, but it doesn't mean that they can't be offloaded to the edge and have a positive impact.