Does Interrupting a Microcontroller Data Receive with a Higher Priority Interrupt Cause Data Loss?
Assuming no handshaking, you will not lose any data if the UART interrupt is serviced often enough to keep whatever hardware buffer it has from overflowing. Typically that's at least one character, but it may be many characters depending on the chip (more powerful chips tend to have more bytes of buffer). 

In my experience you cannot depend on XON/XOFF handshaking when the buffer size is small and the sender is a PC- it may send quite a few characters before it gets around to choking off the flow.  

So if the buffer depth is one character, and the baud rate is such that one character takes 1msec then you must not take away more than 1msec in your higher priority interrupt or you could lose data (a bit less because you have to account for the time in the UART ISR to respond and pluck the incoming character from the buffer, and you also should account for the situation where the UART interrupt is in progress when interrupted (look at it occurring just before and just after the incoming character was read)

There are various ways of dealing with the situation where you have to have two interrupts with fast response. One way (usually the best way) would be to not do so much in your timer interrupt- interrupt service routines are best used for getting into and out of briskly). Another would be to implement a buffer in memory and set your UART interrupt to the highest priority (just stuff the received character into a circular queue, increment the write pointer modulo buffer size and return- you can check the equality if read and write pointers to see if the queue is empty). There are still other approaches depending on the requirements and the processor- maybe you don't need to have the timer routine with such high priority, or maybe you dynamically change the priority once it has finished the critical stuff then change it back to high priority, allowing it to be interrupted by the UART ISR. 

More powerful processors will have larger buffers or DMA that will allow the processor to go walkabout for a great many characters before data loss occurs.

TL;DR You can predict this by profiling your timer interrupt and ISR interrupt code to find the maximum execution time and comparing with the minimum time to fill the buffer (at the maximum baud rate).