Let's say a block been created with most tx are segwit , now the block is more then 1MB and will be near to 4MB, I understand that a non-SegWit node ( let's say bitcoin-core 0.15 ) cannot get a block with that size, so How does it see this block as valid ? and if it's because the transactions omit the part of segwit in the inputs then how can the legacy nodes validate the block ?
Non-segwit nodes validate blocks in the exact same way they did before. The still check the Proof of Work, they still check the inputs and outputs of a transaction, they still verify scripts, etc. Everything is validated the same way as was validated before segwit.
The only difference is that with segwit inputs, the non-segwit node does not validate the signature because it does not have access to that data nor does it know how to interpret it. The scriptSig and scriptPubKeys for segwit inputs are still validated as normal scripts and still validate to true (they were designed to always validate to true).
Segwit does not redefine anything that was already in Bitcoin. Instead it defined a new standard output script, with that output script already being valid without segwit. So blocks and transactions that contain spends of such outputs will always see those as valid, even if the new data required for such outputs (i.e. the signatures) is invalid.