Why does Bitcoin Core not produce a Reject message for Conflict TXs? From the perspective of a full node participant in the network, why is it a bad idea to convey to a peer that a transaction has been rejected because its either a conflict transaction/high fee transaction or a transaction which already known to it? 

I noticed that in the Bitcoin Core source code that REJECT_CONFLICT is set at 0x102 which is greater than REJECT_INTERNAL.

if (state.GetRejectCode() &lt; REJECT_INTERNAL) // Never send AcceptToMemoryPool's internal codes over P2P
    pfrom-&gt;PushMessage(NetMsgType::REJECT, strCommand, (unsigned char)state.GetRejectCode(),
                       state.GetRejectReason().substr(0, MAX_REJECT_MESSAGE_LENGTH), inv.hash);


Bitcoin Core code excerpt from src/main.cpp.
Because it is a waste of bandwidth to convey information that your peers should be calculating themselves anyways. It is also a bad idea to rely on peer's calculations of whether a transaction should be rejected or not because they could be lying to you.