The checkChildren functionality checks tree nodes that have been loaded. The loadOnDemand option, when set to true, does not load sub levels. The checkChildren functionality works with the loadOnDemand option -- when you load new nodes, it attempts to resolve conflicts based on the newly loaded data and the data that was on the page so far. This should clear things up so that it answers questions (a) and (b).
As for question (c), it depends on what you are trying to do. If nodes are not loaded, the checkedNodeIds will not report them as checked, since the TreeView does not know about them.
(d) The visitHDS method loads all levels -- this means that it does what loadOnDemand: false does.
(e) Dynamic changes in the template are not officially supported, but the setDataSource method should re-render the complete tree, so it is an acceptable workaround.
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI