Ja,
Code:
vec2(float x, float y) : x(x), y(y) {}
ist in der Tat der Constructor, wobei der etwas seltsam aussehende Teil nach dem : eine sogenannte "Initializer List" ist, die die privaten member Variablen x und y mit den Werten der Constructor-Parameter x und y initialisiert. In den { } könnte noch weiterer Code stehen, welcher nach der Konstruktion des Objekts ausgeführt wird.
Die Operatoren + und - sind überladen, damit man hinterher im Code z.b. einfach Vec1 + Vec2 schreiben kann, um eine Vektoraddition durchzuführen. Analog dazu der Operator *, welcher eine Skalarmultiplikation ausführt (Vec1 * 203).