Transaction propagation criteria vs mempool inclusion cirteria
There are also the 'standardness rules', which are separate from 'validity rules'. So this means a transaction can be either valid and standard, valid but non-standard, or invalid. 

A node can choose to broadcast any transaction it would like to the network, or none at all. 

If a node broadcasts invalid transactions, then it is likely that its peers will disconnect, due to misbehaviour. An invalid transaction cannot possibly be included in a valid block. 

The bitcoin-core core code does not relay non-standard transactions, but it will still accept blocks that include them (since they are still valid). This lack of relaying the non-standard transactions is a safety measure to prevent DoS attacks, etc. You can find some good info about issues with relaying non-standard transactions here.

Even for standard transactions, there is no stipulation that requires a node to relay them through the network. Many nodes will do so, but this is entirely up to that specific node's policy.