[quote1) Why do I (sometimes) have to initialise an output struct like VS_OUT Out = (VS_OUT)0;? (I guess this is not HLSL specific but I'd still like to know.
you aint forced to do so, but if you like to use the same input or output more often you will find it usseful to do so.