The reasoning for the different braces is that:
-
()contains a simple string that the directive is free to interpret and serves as kind of the default argument (usually a URL or other identifier), and -
{}contains generic attributes (i.e. key-value pairs similar to what in some programming languages are called named arguments) that might also be passed on directly to the HTML element, e.g.@video[title](filename.mp4){autoplay=1}. And{#myId .myClass}are simply shortcuts for{id=myId class=myClass}— this syntax is taken from Pandoc.
I’m not sure I get your @style proposal, could you make an example for the generated HTML? If it’s <span class="important">TODO</span>, that would be [TODO]{.important} in my proposal (see the very first code block above).