I haven't yet played with I2C but SPI is super stupid simple. You have an SPI master device and one or several SPI slave devices. SPI is full duplex...meaning that both master and slave transmit/receive simultaneously. However, ONLY the master generates the shift clock.
The clock can be thought of as a "trigger" signal. There are several modes of SPI, the most common being that the clock idles in the low state and the SPI devices transmit on the rising edge of the clock while receiving in the middle of the rising/falling edges of the clock signal. In this mode, the SPI devices do nothing while the clock is low. The "pulsing high" of the clock signal "triggers" the slave devices to transmit data to/receive data from the master SPI device.
The SPI protocol transmits/receives MSB first.
Some SPI devices also feature a "slave select" or a "chip select" pin. The master will drive the SS pin low on the SPI device it wishes to interact with prior to transmitting to/receiving from said slave SPI device. This allows multiple slave SPI devices to co-exist on the same SPI buss, but only one SPI device gets interacted with by the master SPI device. With I2C, it uses device addressing instead of a separate slave select pin, which allows two wire communication between the master I2C and the several I2C slave devices which exist on the same I2C buss.