My questions are, if I have a couple dozen custom skills that I want to track, will adding them in this way cause any issues further down the line that I am not seeing?
Yes. When (not if) Toady adds more skills, you won't be able to distinguish yours from the new ones. Maybe negative numbers would work, but I'm not sure.
I would write a small script that would always assign custom skills above whichever is the highest game skill. That way SPELL_CASTING could be 135 or 146, it would just always be tracked as #skills+1.
As for the other stuff, I guess I will just have to play around with it a little bit and see what's possible, and, more importantly, what causes crashes.
EDIT: It looks like I can use df.job_skill._last_item + X to reference a custom skill X, and that the skill will be stored nicely and remain active between save/reload. There isn't anything written in the 'V'iew screen, but I am working on a custom gui anyway so that isn't a big issue. It's really nice to be able to use the same code to handle custom skills as basic skills. You can even add entries onto df.job_skill so that code will properly understand what you are looking for (that gets rewritten every time, but that's easy enough to add to a on-load.init).
I can't figure out how to add custom attributes and traits and such (if it's even possible). Whenever I attempt to insert a new attribute into unit.body.physical_attrs or unit.status.current_soul.mental_attrs I get an error, so adding them there may not be a possibility.