What you;re experiencing is a very common problem.
As you know, some macos require you to use html entities to replace characters, like this
But whenever you open a Macro, roll20 parses that macro and replaces any html entities wit the character it is substituting for.
There are two solutions to this problem.
When you make a macro like this, get it working how you like, close it and then never open it again. It will work fine. It's a good idea to make a copy of it somehwere it wont get processed, because sooner or later you will open it, breaking it again.
The second solution is to store the macro as an Ability on a character sheet. Abilities don't get processed this way, so they can be opened safely without processing the html entities.
A common tip is to set up a Macro Mule, a character named something like Macros, on which you store macros. It's called a Mule because you can transfer this character between campaigns - you cant normally transfer macros between campaigns, but this gives a way to do so.
If you set up the macro character's visiblity as: Editable by Players, but not Visible in Player Journals, players can use macros on this character (by using %{Macros|ability-name} syntax) and it doesnt clutter up their journal.