GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
GraphQL is intended to be the outward facing HTTP API for any kind of application but it is most powerful when the data is normalized with highly interconnected Collections|Tables|Nodes. The GraphQL Query Language (GQL) is designed to project interconnected data in a very intuitive and flexible way.
GraphQL itself is a Spec and is implemented by a number of different programming languages. These are the most popular supported languages
Running queries from the client side can be done with any HTTP client but client side libraries can be very beneficial.