Houdini is entirely a node-based system and HDAs are just your custom nodes (on contrary to the built-in ones).
At the end of the day, an HDA is just a 'function' you define like what you do in a programming language. A function can call other functions etc. It might sound nothing special if you're a programmer, but Houdini is the only generic DCC that is built around this idea, making it more like a framework than an app.