I'm using ZenHub for task management. In ZenHub, I see 5 columns as displayed below:
So, I decided to move all the issues to Backlog. After that, I have a question: what are differences between To Do and In Progress ? Because all tasks in Backlog must be done. And when I want to do a task, why shouldn't I move directly through In Progress ?

You can see here a simple definition of
backlogin Agile Project management:There are three different
backlogtypes being them the following:Product backlog
According to Scrum in the Wikipedia, its definition is:
Or in other words, all of the tasks needed to be done to finalize the product.
Sprint backlog
In Scrum (for example) you develop in sprints. Usually sprints have the duration of 2 weeks. And for each sprint you should pick a set of tasks from the
backlogthat you think you will conclude in the duration of the sprint.Release Backlog
Usually you develop your product by releases. First you determine which tasks go to each release, so you can release earlier versions of the product for the client to test and suggest modifications, without too much time and resources spent.
With that in mind, your `To Do` should be probably interpreted as the sprint backlog and your `backlog` the product backlog. Or you can use your `To Do` as a release backlog for instance if you don't develop by sprints.