HELP please! Arduino serial communication

There is a Serial.available() method that reports how many bytes of data there are to read. You should be using that function before ANY call to Serial.read().

My original issue was that the Arduino and the PC app would not link, to resolve this I had to insert a;
Serial.println();

That has to do with what told the PC application to stop reading a packet of data. Clearly, the carriage return/line feed character was defined as the end-of-packet marker, so you need to send one. The ln in the name means that that is what the function does.

when the PC application driving the Arduino starts up, it starts polling for Bearing every second by sending C's. But the Arduino doesnt always respond...

Handshaking is required. The PC should not send anything until the Arduino says "Hey, there, I'm ready. What's the holdup?" (or something like that).

then I noticed that the Arduino wasnt responding at all to the C commands, So I decided to insert a delay between the READ
command and the firts IF command to make certain the Arduino would be ready to respond to the data from teh serial port...

The Arduino did not appear to be fast enough, so you slowed it down some. If there is still a problem with it being too slow, will you be trying a longer do-nothing period to make it slower?

This did help... But... after tweeking the delay the best I can come up with is a response every second C command every

No, it didn't. The best "tweaking" of the delay() will involve the delete key or the backspace key, depending on which direction you choose to approach it.

To make any useful comments on your code, we'd need to see more of it. What are AZ, AZ0, AZ00, and AZreal? If AZreal is a String, it can't be greater than 10. If it is an integer, I'm not sure is can be concatenated onto a String object that way. In any case, there is a way to generate a fixed size character string to send that uses a lot less memory than the String class.