As the comments say, it's waiting until the transmit buffer is empty - it's the standard way of using the UART - you don't want to overwrite the buffer while it's still been used.
2) Is there a way to receive data via an interrupt?
I dont really want to keep polling the usart when it wont be used that often.
Yes, you can set the hardware UART to generate an interrupt when data is received, or you can occasionally poll the interupt flag to see if data is received.
Check out the PICUART.zip example. Enable the UART interrupt and configure the TRIS register correctly for the RX and TX pins, then when a byte is received the code will automatically jump to ORG h'0004'.