Does testmempoolaccept check all possible rejection rules? Is there any rejection rule that testmempoolaccept will not check, or is it safe to assume that if it passes testmempoolaccept validation it will be at least broadcast?
Mostly concerned about complex reasons, such as too-long-mempool-chain.
No it's not, or at least not at any point in time.
There are both invariant and time-dependent rules for the mempool to accept a specific transaction.
The testmempoolaccept command will check your transaction against the former (policy and consensus rules), but there is nothing you could realistically do to check the latter.
As an example of a time-dependent rule, you could have a software checking pre-signed transactions paying 253sat/kW of feerate against testmempoolaccept.
Valid transactions would pass the check, nonetheless they would not broadcast if the mempool minimum feerate is &gt; 253sat/kW at the time of broadcast.