just keep in mind, that every Gadget needs a unique ID.
when you create Gadgets by Number, constants or not, you have to take care on your own not to reuse a number.
if you do, nothing horrible will happen, just the first gadget will vanish.
creating Gadgets by numbers will open an internal handle table, where the handles of the Gadgets are stored.
this Table is rather an Array than a List, so when you create a single Gadget with number 5000,
you will reserve a table for 5001 handles at the same time.
thus, working with "speaking code" number ranges may not be the best solution.
(this applies for every PB object that is identified by number, Windows, Sprites, Sounds, Fonts, etc)
working with #PB_Any frees you of these problems, but then you need to store the handles yourself.
the returnvalue of the creating function is the internal handle of the gadget.
also this is the ID you check with EventGadget() like you otherwise check the number.
one more detail:
no matter you use numbers or internal handles, using GadgetID() on it returns the OS-handle of the object.
I think this should clarify a lot.

oh... and have a nice day.