Problem interfacing ADS8341 SPI

In your code you should insert a pinMode(spi_SS, OUTPUT) in the setup routine to ensure that the SPI hardware is in master mode.

After some more reading on the SPI.transfer(data); function, I see that you can send the data (1 byte) in the 'data' variable and then the function returns the received data. How does the function know when to stop reading the data / does it only read the 16 bits that I need from the ADC

Each call of SPI.transfer(); does transmit exactly one byte (in both directions). The method does not know when to stop, it does just send 8 clock cycles. In each clock cycle it sends one bit of the byte supplied as a parameter to the method and it reads one bit from the MISO pin. The resulting byte from that read is returned by the method. It doesn't care if the connected chip is providing data or not it just reads what the pin says. It's the problem of the connected chip to provide the data in a timely manner.

So if you want to read 16 bits of data from the ADC you have to call SPI.transfer() twice.