Purpose
In Apex 5.1, there is a great tree region and here is an example of using the underlying plugin treeView.js API in order to change the behaviour into a checkbox tree.
Explanations and sources
You can read all about the how to reproduce this in your pages by reading the related blog post here.
I think it can shed some light on the potential of this plugin and gives some good directions about usual tasks like saving user preferences and setting them back.