I know that Assembly is the lowest level of the stack besides machine code, but are the languages above it all considered "high level languages" or is there a hierarchy amongst these languages. For instance, are C++, Ruby, and Python all "high level languages"?
High Level languages are all languages that are able to be written in code that is easy to read. High level languages will use words that are easily read and understood and because of this, the code is very different from low level code. Code written in these languages has to be compiled and assembled into code that the computer can directly understand. This resulting code will be the low level language/code that you are referring to.
High Level: C++, Java, C# Low Level: Assembly, Machine code
There are supposedly generations of languages. According to Wikipedia:
First generation: Machine language.
Second generation: Low-level programming languages such as assembly language.
Third generation: Structured high-level programming languages such as C, COBOL and FORTRAN.
Fourth generation: Domain-specific high-level programming languages such as SQL (for database access) and TeX (for text formatting)
The fifth generation was supposed to be developed by Japan's fifth generation project in the 1980s but didn't really go anywhere. Some people consider constraint-based languages to be fifth generation (Wikipedia).
There is also a supposed hierarchy of language power, expressed by Paul Graham as the "Blub Paradox" in his essay Beating the Averages. In this controversial approach, languages such as Basic and Cobol are low in the hierarchy, Python and Perl would be in the middle, and Lisp would be at the top.
Perhaps a better way to try to understand which languages come from where is a directed graph on a timeline (like a family tree ).