I don't agree completely, although your concepts are valid.
1) Mainly you
should use classes when you need to represent an object, real object or immaterial object.
2) You can use a single instance of a class instead of a code module; so, if later you will need typical characteristics of classes you are ready to add them.
3) Types can be useful but a class can be used for the same purpose with more power and control (you can validate the values and also raise events)
Surely it is easier and faster, sometimes, to write:
Type tPoint(X As Int, Y As Int)
Anyway a class is better, even in cases like this one.
Microsoft, after many releases of its products, decided that all things in its languages should be an object, an instance of a class. To me it seems right.