A pull request lets you tell others about changes you've added to a fork of their (or ancestor) repository, effectively granting them permission to include and use your code in their codebase. Once the pull request is created, the other party can review, accept or reject the set of changes, discuss further modifications and even add follow-up changes or merges.
Think of pull requests as a simplified fork and update workflow, where the repository author(s) moderate the changes nonrepository developers contribute.
Day to day usage
An important thing to know about pull requests is that they can only exist between related repositories. The term "related repositories" means that either repository is ancestor or sibling to the other through direct or indirect relationship (like a fork of the fork of the fork). Pull requests usually originate from a forked repository to ancestor repository, though the functionality is flexible and allows pull requests from ancestor repository to a forked repository (for cases where the original author wants to contribute later added code to a fork).
For more information about using pull requests on the Online Compiler, please see our tutorial, which covers creating and editing a pull request, viewing a pull request and accepting or rejecting a pull request.