The weight of this choice relies a lot on context.
If your novel is in the "real world", or anything closely related enough to share language or dominant cultural traits, you may want to avoid all those terms and make up new ones. What you did with the creation of "pyromagus/necromagus" is excellent work, because these words speaks by themselves. Except that they already carry meaning, which conflicts with the one you're trying to convey, bringing you back to square one.
But you clearly had the right idea.
On the other hand, if your novel takes places in a world which is different enough from ours , it may not matter at all.
So you have to reflect about this: if this novel takes place in a world like ours, do you care about the "real" meaning of these words, or do you accept that you'll have to redefine them?
On the other hand, if your world is different enough from ours, the problem is completely elsewhere: maybe you'll want to use familiar-sounding words just so the reader may intuitively have a clue about what you mean even before you have to explain it to him.
A different but related situation could be the following: let's say that an author wants to include horses with wings in his novel. He very well could name them "pegasuses". Except that... Pegasus isn't a specie, it's the name of a very specific and unique creature. So if this author is dealing with greek mythology, he's making a huge mistake. On the other hand, if he's in a fantasy world and want to take a shortcut so the reader understands what he means, even if his version of the flying horse has some unique characteristics, he's already done enough for the reader to have a good idea of what he's speaking about. But... he's also using words which are heavily culturally charged, which means that now he linked his fantasy world with ours, and if he's creating something new and unrelated this may let the reader think that this fantasy world with be close to ours somehow.
tl;dr: If you work in an historically more-or-less accurate setting, define your words the right way. If you're creating something new, you can create new terms and run with it. If you want to make the reader's job easier (to the cost of some immersion, still I think this is a good deal in many cases), you can make up "real-world sounding" names which the reader will recognize yet are not culturally charged - which you almost did with "pyromagus/necromagus"... just change the "magus" part and you're golden... or run with it by redefining it clearly before the reader can think about it too much (because, let's face it, these sound badass).