No, unlocalised names should only be used for display/translation purposes. They're not unique and can change at any time.
Instead, compare the Item instances directly (e.g. stack.getItem() == MyModItems.FOO_BAR) or check if the Item is an instance of the appropriate class (e.g. stack.getItem() instanceof ItemFooBar). This also applies to other registry entries like Blocks and Enchantments.
Don't use numeric IDs, they can be different in every save. Use EnchantmentHelper.getEnchantments to get the Enchantments on an ItemStack. The Vanilla Enchantment instances are stored in the Enchantments class.
Recipes are managed by a Forge registry, register them in the appropriate registry event; just like you do for Blocks, Items, etc.
The name argument of addShapelessRecipe is the registry name of the recipe and the group argument is the recipe's group name. Recipes with the same group name are displayed in the same button in the recipe book.
You should move your recipes to the JSON system rather than hardcoding them.