For normal maps you may want to use Blender. Long story short, you create the low poly model, create a high poly one, then you can tell blender to calculate the normal map that allows the low poly one to look like the high poly one. The other types of map that you mentioned are ok to do in PS as far as I know since they are far more simple. As for editing these normal maps, I have no idea. Its an issue I need to look into at some point, since I will likely want to add a normal map noise onto certain surfaces that are already normal mapped.
The process is slightly different depending on if you are using the standard Blender Renderer or Blender Cycles rendering. I use the Cycles method since that is how my project is set up materials wise. I have heard that cycles baking of normal maps does offer some advantages over standard renderer, but they are only small things that you may not need. This tutorial is pretty good, however contains way too many words for what it is: https://www.katsbits.com/tutorials/blender/cycles-bake-normal-maps.php The process of baking normals is no where near as complex as that tutorial makes out. So don't let it scare you away There is a video at the bottom of it though if that is more useful. Searching for something like "blender bake normals" will get you some decent tutorials, there are also some basic YouTube tutorials that show it too.
I found multiple software that generates these types of images out of a normal map thanks to a post i created on /r/gamedev subreddit!. https://www.reddit.com/r/gamedev/comments/6tfcmj/does_anyone_have_a_good_program_for_creating/ I went whit MindTex2!
If that is the sort of thing you want then this free online tool is worth a look: http://cpetry.github.io/NormalMap-Online/