Yet, you don't have to display everything, every time... If the player is of class X, you don't have to show the whole tree for each class in the UI. It's not even necessary to show the 5 dialog items per skill, just show the current level and the item corresponding to the next level. 20 skills per hero also means you only need to display the current hero for player X in the UI.
So basically, there are at least 3 things you can do to reduce the content of the trigger showing the UI. You don't need to do a trigger for each of the 120 cases, your trigger CAN'T possibly check for the 120 cases alone either, so you just need to do a trigger generating a UI depending on values (integers/reals, unit type, etc...) and booleans defined by other triggers. The trigger showing the UI should do nothing but check values that were already modified by triggers BEFORE, so that you don't have to check every possible case at the moment you display the UI.
What you need should be something like:
1 trigger to define each dialog items (this is the biggest trigger you will have, it is used to create a menu containing the maximum of 120 items you speak of... but I seriously advice you DON'T display the whole tree for each hero and each level of each skill... that's just insane)
1 trigger "show UI" (which will show the dialog box, check for values from other triggers then display them in the right dialog item)
1 trigger to define the 5 levels of a skill (basically a switch that will change the settings/actions done depending on which skill it is)
1 trigger to define which hero has which skills in his "tech tree".
You will have something like 30-40 variables (most likely integer arrays and/or booleans) to recognize every piece of information, and display them in a dialog box as needed. If you have more, you're doing it wrong. From what I remember from the video you showed once, there were errors very often in the error frame and the game mechanics were not working fine. So, obviously, the project is very hard to make (who could deny it?) but you're doing something wrong nonetheless. You shouldn't give up this project, just seriously work on a better way to organize your triggers so that it will be easier for you to build on it. You started in the wrong direction, that sucks but it's OK. You feel like you're in a dead end because you are, and this is the only way your method could have ended because it's not the right one. The only option left now is to take the problem from another point of view... ;)