Just to start off: class names have absolutely zero impact on anything to do with SEO.
1) While generally this comes down to personal preference, I’d argue that the majority of the industry would use dashes `some-class-name` over any of the other options.
2) It depends on what the *generic* term is. If you named something `column-a`, I’d say that’s too generic. What is the content inside? Even something like `main-content` while looking generic has a better indication of what it contains.
ID’s and “role” play a part as well, I’m still figuring out aria, but semantically always say exactly what you mean and you’ll be safe.
For example, header, nav, footer are all pretty self explanatory.
However, with article, sections, divs etc – ID comes into play.
So for example, id=”main-content”, id=”sub-content”, id=”sidebar”, id=”sub-navigation”.
The best way to approach semantic code is thinking “Would someone understand how these elements relate to eachother if they were just reading the code alone? If the answer is no, or it’s too complex, or the content is not being described then you need to look again.
I dont ever style ID’s either. I normally attempt to make a class for the style rather then styling the element (in case i need to add a different element later on). My primary use for ID’s is in use with JS.