If we wanted to summarize in a single sentence the potentialities offered by GraphQL, this sentence would certainly be "What you ask is what you get". Developers accustomed to interacting with traditional REST architectures or, more generally, services and APIs for the recovery of structured data, know that it is often necessary to manipulate the data returned from the various endpoints consulted in order to obtain the exact desired information. Moreover, assembling all this data into one place could require multiple round trips to the server(s), which risks making end users experience slow and poor, especially on mobile side.
GraphQL is a query language for API -- and of course a runtime for fulfilling those queries with your existing data and the related runtime -- that enables clients to ask only and exactly the data they need and nothing more.
Developed internally by Facebook engineering team to solve this kind of issues, GraphQL was released open source few years ago and it's gaining more and more popularity among mobile and web developers. GraphQL embraces modern trends on how applications are built, where you may have only one back end application and multiple, different clients (web browsers, mobile apps, IoTs, ...) with different capabilities and features.
In short, in GraphQL you have a single smart endpoint where you send all your customized "declarative" data queries. This endpoint acts like a single source of truth to all connected applications and will handle the actual retrieval (and caching) of data and will build the exact and customized response of your query.
In the following videos will be explained basic concepts of GraphQL such as queries, schema, and resolvers, the general client-server architecture, the great powers and the responsibilities on front end/client side, and the advantages in maintenance and multiple provider aggregation on back end/server side.