Is there a way to create a hierarchy within the labels - similar to folders? Meaning, I have about 20 labels and I want all of them to now fall under one main label. And I only want to see the one label unless I click on it to then see the 20 sub labels.

Gmail doesn't have label hierarchy, but you can fake it with creative
label naming. Let's pretend you want to make a folder named
"Newsletters" with sub-folders for: family, hobbies, work. You could
create labels:

newsletters/familynewsletters/hobbiesnewsletters/work

So that it would look like you had hierarchy even though you don't.

There's no way to collapse/expand with the above.

That said, there is an add-on for Firefox that implements label hierarchy, but I've never used it so I can't comment on how well it works.