Is it 100% OK to say "All software doesn't need to know the system lower than the architecture level"?
Nothing is 100% sure in life.

Abstractions are rarely perfect; they can be leaky.  Nonetheless, just because developers at higher levels sometimes need to know about lower layers doesn't mean they always do, or usually do; and it doesn't mean the abstraction is useless.

Yes, there are cases where it is helpful to know about even lower levels of the architecture.  For instance, cold boot attacks and the row hammer attack are made possible by a property of the physics of DRAM cells, so if you want to analyze the security of a system against that specific threat model, you might need to know about things at the level of devices and physics.  These cases are the exception rather than the norm, but they do exist and are occasionally relevant.