Bluetooth RX and TX

What is the difference between I2C and UART?

About the same as the difference between a tennis shoe and an elephant. That is they serve completely different purposes.

I2C is inter-chip communication. UART is for communicating with an external device.

How do I know when to choose between SPI and I2C?

You look at the device you want to communicate with. If it is a I2C device, SPI makes no sense. If it is a SPI device, I2C makes no sense.