For every bit (byte) the SPI interface gets, one bit (byte) is returned immediately. When the very first byte is sent, the interface does not "know" yet what to answer, so a dummy byte is returned which should be skipped.
SPI has no read command, so you must send dummy bytes to retrieve the information wanted.
A pitfall is the select line, which is automatically taken low when a byte is sent. When the buffer is empty it is taken high again. This can lead to interface errors when the byte sequence is not provided fast enough resulting in ss-line glitches.
Keep in mind that there is no SPIS - send command, always the SPIM has to send data.
Then what is SPIS_WriteData do? Isn't this writing data from slave to master when ss line is low?
No, it just puts a byie into the transmit buffer. The master still needs to send a (dummy) byte to transmit it.