Each dot is a "commit" - they represent changes made to one or more files.
A single line between two commits means that the upper commit was created from the lower commit. In other words, the person who created the upper commit had the lower commit checked out when they committed their changes. The lower commit is called the "parent".
A commit which has more than one parent is a "merge". These happen because two people can begin their work at the same time on different computers from the same (or different) starting points, make commits separately which don't know about each other, then try to push later. When the second person tries to push, git will tell them that they need to pull first. When they pull, git will merge the other person's work into their branch (and possibly need to resolve conflicts). This 'merge' step creates the multi-parent merge commits. After that, the second person can push.
At any time, you or someone else can check out any commit in the history they want, and start making commits at that point. You can then merge those commits into any branch you want, if you feel like it, or leave them separated if you decide not to merge them (perhaps they are an experiment that you want to keep separate, for example).
Clarification about 'local' and 'remote' branches: The branch you see on your own computer called "origin/master" is sometimes called a "remote tracking branch", frequently shortened to just "remote branch" and represents where your computer last fetched/pulled that branch from the 'origin'. 'origin' is the default name of whatever host (github, bitbucket, visual studio team services, etc) you cloned from, and where you push/pull to by default.
The remote branch on your computer can differ from where the equivalent branch is on github/bitbucket/etc. It only updates when you fetch, pull, or push that branch. When you commit, you only update your local branch.