Category could be an optional property; a pin with a category would prioritize the category's properties (icon, label, description, etc.), while a pin without a category would just use its own properties. Or, you could just let the addon keep track of its own pins (eg. GatherMate keeps a list of all the Silverleaf pins it's created) and maybe have some kind of "batch update" API in the lib.
You may also want to take a look at the map pin placement code in the CandyBuckets addon series.
(1) Reloading the UI is just like logging out and back in. SavedVariables are written out to disk, all UI objects in memory are destroyed, and then the whole UI is loaded again just the same as it is when you first logged in. The loading process is pretty much the most basic concept in addon programming; if you're not familiar with it, I'd strongly recommend you go read about it ASAP.
(2) A library for placing icons/pins on the map should just do that. It shouldn't also get into travel distance calculations, finding the fastest routes, telling you which continent Zone X is on, or anything else that is not directly related to "put a pin on the map at this position in this zone". Bloated conglomo-mods like Zygor (at least as you've described it) and the (thankfully long-dead) Cartographer are cautionary tales, not examples worthy of emulation.
1 gameyard = 1 gamemeter, hence the distinction is not needed.
This, and if you're returning display text (as opposed to a number only) then rather than asking the addon to specify what they'd like to call this unit of measurement, just use the proper unit name for the user's locale, eg "yards" in English, "metros" in Spanish, etc.
Libraries can have saved variables, although it is not recommended. DataStore is arguably a set of library files, and it has saved variables. Probably not the best example, however.
DataStore is not an embeddable library; what you're writing is, so it cannot have saved variables, and I can't really think of any reason why you'd need it to. Most addons that would use this kind of thing are going to be using a static database -- eg. the locations of mailboxes or herb nodes -- which would be pointless to duplicate in your saved variables. Plus, if you were saving all the data yourself, you'd need to introduce a lot of additional complexity to keep each addon's data separate, and allow arbitrary extra data to be stored with each location (for example, an herb node addon may want to store info on how many times you've seen an active node at each location), etc. Better just to let each addon handle its own business, and you just provide the tools.