Paul, sorry to be late here...
nb_conda_kernels is actually creating kernelspecs on the fly for each conda environment where you have jupyter installed.
The main idea behind nb_conda_kernels is being able to start a notebook server and quickly change between conda environments without killing the notebook sever, changing the environment and starting the notebook server again. You JUST select the "environment" from the Kernel menu and you are done, you are ready to work in that environment in just one step.
The python[root] environment is actually pointing to the ipykernel in the Root environment which is most likely the path you see when you call jupyter kernelspec list from the jupyter living in the root environment...
nb_conda_kernels is removing the native Python3 kernel reference and adding this python "root" kernelspec to achieve consistency, otherwise Python3 and python[root] are pointing to the very same python if you are working with jupyter installed in the root environment (probably a big % of the use cases).
Finally, if you want to go back to the previous experience, you can always conda remove nb_conda_kernels because it is just an "extension" on top of the jupyter package which is installed by default in Anaconda.
Eventually, nb_conda_kernels should be able to deal better with preexisting ipynb containing the Python3/Python2 reference...