Whether it's overkill is more a matter of scale and effort than anything else. To directly address your first question, GraphQL was specifically designed for "regular applications" rather than public APIs - its use for the latter is a relatively new thing being pioneered by the community rather than GraphQL's creators.
Rather than repeating answers that already exist in numerous forms in numerous places, I'm going to suggest you watch some of the original talks introducing GraphQL to the world, these are what got the early adopters excited, and should answer a lot of questions:
Data fetching for React applications at Facebook
Lee Byron - Exploring GraphQL