2. Your data structures should not dictate the shape of your api, usage patterns should (e.g. the user always needs records a,b,c together or they have a and want c but don’t care about b)
3. It stops you changing any implementation details later and/or means any change is definitely a breaking change for someone.
But actually, yes. Sometimes the format changes, sometimes you want to store an extra bit of data that should only be exposed internally. Sometimes you realize that storing a timestamp as a unix-time int no longer cuts it, and you have to migrate to an ISO 8601 time, or whatever, or you add a flag to your records for some A/B test feature, that is intentionally not going to last forever, and should only be internal.
You probably want that layer anyways, for things like AuthN/Z.
If you're going to publicly expose an API, it's got to be stable for a while - that's a commitment you're implicitly making. That's hard enough to maintain without now also committing to stability in your internal representation of data.
And in 30 odd years, everything will be different again, but your company's main data store will not have moved as fast.
To additionally answer you with an analogy: when you have a problem with a company, you call the call center, not Jenny from accounting in particular. Jenny might have helped you twice or thrice but she might leave the company next year and now you have no idea how to solve your problem. Have call centers to dispatch your requests wherever it's applicable in the given day and leave Jenny alone.
As Joel Spolsky put it: ”the cost of software is the cost of its coupling”.
More specifically the cost of making changes when “if I change this thing I have to change that thing”. But if there’s no attention paid to coupling, then it’s not just the two things you gave to change, but “if I change this thing I have to change those 40 things”.