Substitute is an amazing attack and is really helpful competitively; however, its not very good in-game. Here is the point of it:
For just 25% HP, your Pokemon can enjoy a safeguard against weaker attacks, immunity to status effects, and a protective barrier that puts your opponent under a lot of pressure to attack.
-Substitute is also very beneficial for stalling with toxic and leech seed.
-It also allows for prediction and allow you to know what attack to use
-It also allows you to use set up moves like calm mind if your Pokemon survives the first hit.
-Substitute blocks status moves like toxic and will-o-wisp as well as moves like growl.
-Substitute is also a great combination with focus punch. You use substitute and then because your protected from the hit, you will be able to hit with focus punch.
-Substitute also blocks secondary effects of moves such as crunch's defense drop.
So generally, the move is good if your substitute will survive an attack from the opposing Pokemon but not if your substitute will instantly break.