If we wanted to summarise in a single sentence the potential 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 for only and exactly the data they need and nothing more.
Developed internally by Facebook’s engineering team to solve this kind of issue, GraphQL released open source a 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, etc.) with different capabilities and features.
In short, in GraphQL you have a single smart endpoint where you send all your customised "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 customised response to your query.
The following videos will cover the basic concepts of GraphQL such as queries, schema and resolvers, the general client-server architecture, the great powers and responsibilities on front-end/client-side and the advantages in maintenance and multiple provider aggregation on back-end/server-side.