Non-synthesizable can also mean the compiler could convert the HDL into hardware, but for some reason it doesn't do it, usually because it requires too much effort, or the target hardware doesn't adequately support it. Common examples are floating-point arithmetic and precise time delays.
The statement which directly can be used to generate the Hardware called as Synthesizable statments.
The statements which can't make any hardware is known as Non-synthesizable.
Ex: wait, after statements.
They can not generate any hardware. See for generating delay we have counter. So 'wait' as such will not do anything. As far simulation is concern it will show you same output but after synthesis it will not.