Anything can be a descendant of anything -- unless they're not allowed to be nested in the first place. No
p p
for example, with or without class names.
div.classname div.othername
div.classname div
div.classname .othername
div div.classname
div div
div .classname
.classname div.othername
.classname div
.classname .othername
et cetera. Or, for that matter,
div.inset div.inset
(two of the same name) if your structure warrants it.
You can go to multiple generations--
div.classname div div .othername ul li.thirdname ul table p.superspecial span.widget
But in real life (as opposed to, ahem, "themes" developed by teams of people who weren't speaking to each other) you rarely need to.
This applies both to classes and to IDs-- though it's pretty hard to think of a situation where you'd really need or want to spell out a style for
#idname #othername #thirdname