Good questions! For any "struc XXXX", Nasm calculates "XXXX_size" and makes it available to us. Since POINT is defined as two dwords, POINT_size is defined as 8 - XXXX_size is in bytes - so "resb POINT_size" reserves enough space for two dwords.
If we wanted to define POINT_size_in_dwords as POINT_size/4, we could "resd POINT_size_in_dwords"... but Nasm gives it to us in bytes.
If you need some memory for an instance of your MSG structure, "resb MSG_size" or "sub esp, MSG_size" will do it, even though you haven't defined MSG_size "visibly". Who says Nasm doesn't do anything "behind your back"? :)
Best,
Frank