if you’re writing on the fly, Markdown is probably the easier thing to use than HTML to achieve most of the things you’re describing. here’s iNat’s blog post about their Markdown implementation: https://www.inaturalist.org/posts/38475-less-agreeable-observations-more-agreeable-text-formatting.
here are a few additional comments of my own related your your specific use cases:
i assume you’re talking about a horizonal rule. this would be <hr> in HTML, but it’s just --- on its own line in Markdown.
#heading would be the Markdown equivalent of HTML’s <h1>heading</h1>.
##heading would be the Markdown equivalent of HTML’s <h2>heading</h2>.
… and so on.
some Markdown implementations such as in the forum even automatically create named anchors that you can link to, although iNat’s journals do not. to create an anchor in iNat’s journals, i think you would have to explicitly add one using HTML, like so:
#<a name="link-to-heading"></a>heading
(note: i would use the name attribute in the anchor rather than id to created named anchors. some modern JavaScript frameworks don’t play well with id. so you’re probably going to have more consistent results using name.)
[go to my heading](#link-to-heading) would be the Markdown equivalent of <a href="#link-to-heading">go to my heading</a> in HTML
in addition to the syntax noted in the iNat blog post, i would just point out that you can right-, left-, and center-justify the column values by using a colon or two. for example:
|left|center|right|
|:--|:-:|--:|
|1|2|3|
|1|2|3|
you could also copy a small table into the forum post editor, and it will do some basic translation into Markdown, and there are other translators available on the web that will handle more complex translation.