What happens if segwit node receives blocks from legacy node?
SegWit nodes simply won't download blocks from non-SegWit peers. Preferential peering tries to make sure outgoing connections go to other SegWit peers, but even if not, downloading of blocks only happens from compatible peers.

If we receive a block from a peer which claims to be SegWit compatible, but it lacks witnesses, it will be treated as if the block were invalid, and the peer who gave it will be banned and/or disconnected.