Confused about how to define a class
Use the regular class definition scheme as shown in the TextEditor Python Templates -- unless you have a good reason to use a class Factory. 

As Sambler shows in the new answer to the previous question: You can do this much simpler with standard class definitions -- the use of the "class Factory" was not appropriate in this scenario because it wasn't the least complicated solution.



However, to answer this question anyway; the make_panel function is what we might call a "class Factory". 

Positive


It generates unique classes on the fly, requiring little code to  individualize each class. Especially useful if you need many classes which differ only in small but important ways. 
This avoids explicitly writing the full class out in code for every class if you just need to change a couple of lines or functions per class.


negative


The downside to a class factory is it becomes tricky to reason about the code, especially for newcomers. If you don't know how to introspect a class it becomes a bit of a black-box.
classes generated this way must be registered with bpy.utils.register_class(...)


register_module(__name__) won't find these classes automatically.



How to use such things correctly is better discussed on a programming QA like StackOverflow. See this question / answer " How can I dynamically create derived classes from a base class " . If that question is over the top of your head, probably wait till you get more Python experience before using the code.