ASM is java code that lets you modify java code while it's running. It's literally dangerous if not done correctly.
But in the vast majority of situations you ever find yourself in, ASM is not needed. The order of things to try first goes:
Own code (extending, implementing)
Events (handle existing hooks)
Reflection (access private values)
Making a PR to Forge to insert new events (and then doing #2)
Not doing anything at all (stop touching it)
Starting a new project (I said stop)
ASM