Find the answer to your question
How do I know if any changes were made to specific categories?
In order to check if there were changes to the meta-data of a category, you need to make a call to GetCategoryFeatures
Both GetCategories and GetCategoryFeatures contain <CategoryVerison>. But they are not the same. GetCategories and GetCategoryFeatures are independent of each other. The CategoryVersion in GetCategories represents the version of the category hierarchy. The CategoryVersion in GetCategoryFeatures represents the version of the feature data set of the site in question. Not the same. You can observe with some sample calls, that the CategoryVersion of GetCategoryFeatures is much higher than CategoryVersion of GetCategories [because of the frequency of the data change of the respective data]. In other words, the version number tracks ANY change to ANY category to ANY feature for that site.
This is very important depending on what category information you are looking for. For example, if you are just trying to keep the category heirarchy updates, you only need to make a call to GetCategories and update when the version changes. If you are looking for specific flag information like VariationsEnabled, then you will need to make a GetCategoryFeatures call and update when that version changes.