A punish is guaranteed damage you can get in response to your opponents attack from recovering slowly or being interuptable on reaction. Street Fighter IV is a massive and incredibly complex game that would take an incredibly long time to record every punishable move and everyone's optimal punish in the game.
To test if a move is possible, program the dummy with several seconds of blocking and program it to punish it with a dragon punch or any other move you would like to see if it can punish (for example, program it to use Shinku Hadoken if you want to see if your move recovers far and fast enough to be safe).
Your punishes should be optimized and should be simliar regardless of the character matchup. That's why you block so that you can get time to set up for higher damage setups or you can invest meter to increase your damage.
Optimizing your punishes isn't always about maximizing damage, however. You should also consider things such as positioning and setups. Just because you have a reliable punish doesn't mean you shouldn't reevaluate a scenario. With a little ingenuity you can find entirely new punishes with the same investment. Some attacks are just barely unsafe and require very quick punishes.
Knowing how to punish these attacks usually requires knowledge of frame data, but can really shut down your opponents options. Of course, frame data doesn't tell the whole story, especially since some attacks will push back enough to make them safe. This is why it is important to test these out for yourself in training mode. Some characters have unusually fast attacks that lets them punish moves that people don't realize are unsafe.
Sometimes, range is a determining factor on if a move is safe or not such as Blanka's Blanka ball, E. Honda's headbutt, Rolento's roll and T. Hawk's condor dive.
Most of these moves have a high amount of minus frames but recover very far away. Your ability to punish is based on the range of your attacks in addition to their startup. Here, there won't be a lot of consistency between characters so you'll have to find the best individual punishes for each move. The ability to punish with range varies a lot between characters.
Just because an attack is safe on block doesn't mean it's not possible. Many attacks can be punished before they hit. Jump ins are an obvious example of this and training mode is a great place to practice anti-airs. Guile's double leg sweep, Chun Li's Hazanshu, and moves with super flashes.