I don’t know much about thermocouples but I can comment on SPI and I2C.
SPI can be a shared bus. The difference is that the SPI bus is not “addressed”. Meaning that each device on the bus does not have a unique address. When you want to communicate with an SPI device, you enable its Chip Select (CS) pin. After you finish communicating with that device, you disable its CS pin and move on to the next device. The other difference is that SPI can run much faster than I2C. You have to set the SPI clock divider to whatever speed is appropriate for all the devices on your bus (can be in the mbit range up to the system clock speed). When using SPI, you clock out whatever is in the SPI out buffer on the MOSI line. As you are “clocking out” data, you are also reading in data on the MISO line. The SPI bus requires more lines (minimum 4… MOSI, MISO and SPICLK are shared, plus 1 additional unique CS line for each device on the bus) than the I2C bus (2 lines total).
For I2C, the bus can communicate at 1 or 2 fixed speeds (100k/s “full speed” or 400k/s “fast speed” modes). You can communicate in the 1mbit/s range but I haven’t seen alot of devices that support the “high speed” mode. When you communicate with a device, you first have to send its unique I2C bus address and (usually) the “register address” that you want to read. All slave devices listen for their address to be called. When they “hear” their unique address, then the protocol allows the slave device to send the requested data.
You might want to check out the 1-wire Dallas DS18B20 temperature devices. You can have multiple devices on the same wire.
Or check out any of the temperature monitoring devices on Adafruit. They usually have good tutorials for their devices. If you go onto the Particle WebIDE, click on the libraries button and search for the type of chip used in the device you’re interested in. For example, search for DS18B20 and you’ll find a few libraries… the most reliable of which is maintained by @ScruffR.