vec_set expects a VECTOR. A VECTOR is three vars in a row.
my.x is not actually a vector, since my is an entity, but within that entity is stored x, y, z in the same order as in a VECTOR. When you say:
vec_set(my.x, your.x);
Lite-C actually knows that this function expects a place in memory (in the manual, the paramaters are VECTOR*, not just VECTOR), so it passes the memory address of my.x, and the function, thinking it has the memory position of a VECTOR, sets each component appropriately.
I hope that makes sense. I'm unwell at the moment.
Jibb