Alfresco Categories are Content Nodes, so there is no reason you can do all the things you want with them through the NodeService API. Other APIs can also be used to manipulate Categories, although for what you want NodeService is more generic.
Additionally, Alfresco supports having multiple category hierarchies, but that's not currently exposed in UI. Ability to manage all category hierarchies would be great.