As far as I am concerned, heading tags (H1, H2, etc) are optional for good SEO. Google's algorithms today put much less emphasis in on-page SEO factors. In fact, Google is now penalizing for over-use of keywords (keyword stuffing), much more often.
Three years ago, if you wanted to rank for a keyword you would create a page targeted at that keyword. You would use the keyword in the title, the headings, the meta description, and several times in the body of the page. You would link to that page heavily internally, using the keyword as anchor text. You would build links to that page from external sites, also with the keyword as anchor text.
Today that is a recipe for disaster.
Today you want to build several pages around that keyword, covering all aspects of that keyword. You want to use the keyword and its synonyms in title tags, but not as the title tag, as part of a phrase. You want to use the keyword when appropriate in the text, but being careful not to appear to put it in when it wouldn't sound natural. You want to link the pages together. You want to get external links, but use anchor text that is more natural such as longer phrases, your domain name, and "click here".
In today's Google algorithm, heading tags may be slightly helpful, but they can hurt when used badly, and they are not required.