long story short, by declaring a
class_name YourCustomClassyou basically create your very own node, with his own methods and properties.
you can obviously use them to instance new nodes, but this is not really the reason they are meant to (i mean, you can instance any saved scene without creating the class): the real streanght is that, after creating a class, a new node can inherit that class, meaning you can build nw methods and properties upon the methods and properties of the original class.
Eg: you create a class inheriting a kinematic body, and call it GenericProjectile. In this class you place all that is shared by every projectile in your game (
move_and_slide, collision, queue_free, etc). Then you create a new scene called FireBolt , that inherit the GenericProjectile.
FireBolt will still move and act as a generic projectile, but you can add a the new method
explode() after collision is detected.