It defines types and fields for the data and the relationships between them.
By sending GraphQL queries written in a JSON format to the GraphQL server endpoint.
Using GraphQL mutations similar to RESTful POST/PUT requests but with flexibility of queries.
Popular choices are Apollo/GraphQL-Yoga for Node, GraphQL-Java for JVM, Graphene for Python etc.
The GraphiQLIDE, Playgrounds, Apollo Client library, Code generators like GraphQL Codegen.
Through authentication, authorization, rate limiting, input validation etc using libraries like GraphQL Shield.