Semantics are used to bind your vertex buffers to your shader inputs. In D3D11 you have buffers which are just chunks of memory to store data in, shaders which have an input signature describing the inputs they expect and input layouts which represent the binding between buffers and shaders and describe how the data in your buffers is to be interpreted. The role of the semantic is just to match elements in the buffer layout description with the corresponding shader inputs, the names are not really important as long as they match up.
It's up to you to correctly specify the layout of your vertex data when you create an input layout object. If your input layout doesn't match the actual layout in memory of your data then it will be effectively like using reinterpret_cast and you'll render garbage. Providing your semantics match up correctly between your input elements and your shader input however they will be correctly bound and things like the order of elements don't matter. It's the semantics that describe how data elements from the vertex buffer are to be passed to the inputs of a shader.