Logic compatibility basically comes down to:
- Output range exceeding the input threshold range in the worst case
- Allowed input voltage range
A driver should also have a reasonably short rise/fall time.
#1 is so that, when connected to any compatible source/output/driver, no input is left floating at an indeterminate level.
Which is further so that we can call it "digital" in the first place. Digital is a strict subset of analog: all real signals vary continuously over time, and are no more quantized than the astronomical number of electrons flowing through a circuit. Digital is a simplification, where we push voltages (or whatever is representing the signal) to extremes so that we can ignore the continuity of the signal, and its smooth rate of change, and instead use boolean logic with propagation delays. (Which you can see also dictates risetime: too slow and it spends a long time in the indeterminate range.)
So, here we want the output voltage to exceed the input threshold range, so that the input reads a stable value. And this should remain true even in the presence of noise -- that is, a driver should supply an additional margin beyond the input threshold range, so we can handle some signal bounce, or interference, without corrupting the reading.
Most signal transmission standards use extra voltage range to account for cable losses, termination resistors, etc. as well as noise. For example, RS-422/485 has a strong output level (approx. ±2-5V), and fairly narrow threshold (typ. <100mV), and can transmit over hundreds of meters of cabling. It uses terminated lines, typically Z0 ≈ 100Ω, so a cable length corresponding to a few hundred ohms of copper resistance is enough DC loss alone to be problematic (let alone at AC!). This is a pretty generous distance, so you can see it works pretty well.
RS-232 uses a single high-impedance line, driven at high voltage to account for noise margin as well as losses. It isn't terminated like RS-422/485 are, but line losses and leakage (and required baud rate) contribute to limit the maximum length.
To be perfectly clear -- line length means reduced signal level. The situation that you imagine, is a natural thing, and already designed in and accounted for by the standard. :)
#2, is mostly driven by how ESD diodes clamp the input. There are other cases (like TTL doesn't have ESD diodes per se, but the way it's fabricated ends up handling that automatically (...I think?)), but clamp diodes are the most common case.
Now, the RS-232 receiver doesn't have supply clamp diodes, so it is okay to connect to anything making a valid logic level (i.e. ±3 to 25V).
You can get some idea of ESD diodes from the datasheet's absolute maximum ratings: typically a 0.2-0.5V limit referenced to a supply implies a diode there. A fixed limit (not dependent on a supply) implies a zener or other ESD device. Sometimes a current injection limit will also be specified, or an equivalent circuit provided (in which case, the diodes are shown explicitly, and can be relied upon for design purposes, at least within current limits, mind!).
RS-232 requires a ±25V minimum receiver range; presumably zener diodes or other ESD structures will clamp voltages outside of this range.
So with this, your confusion should be not only solved, but you should be prepared to interface anything to everything! Well, anything of binary logic levels at least, heh.