While forking a repository copies the repository on your github, cloning creates a local copy on your computer and syncs it. Forking allows you to make changes to the repo on your own copy without changing the original project. Branches diverge from the original project and allows you to add ideas without messing with the main line of development. Branching does not copy the entire source tree (where cloning does).