Does Odin wipe system image when flashing a new Rom? I wanted to know when flashing a new ROM by using Odin does it wipe and clean the contents of the partitions(system, boot, ..) and then add the new content or just use some kind of replace over files?

The reason for asking the question is that I had my phone which was functioning normally but I decided to flash the new and updated stock ROM for my phone. So I went on with the process of flashing and after it finished and booted successfully, I noticed that stock apps are updated with some new apps but my previously installed apps and settings, contacts, ... all are there too! so I did a factory reset to have a clean start. (Note: I used a stock '.tar.md5' file which had everything in it; system,boot,recovery,...)

So what should I do if I want to have a completely fresh ROM just after flashing? (any options in Odin maybe, what about 'Nand Erase All' option?)
As stated here by user90492, dont use the NAND erase all. It will completely wipe the NAND including bits required to boot.

Odin should theoretically wipe the partition before writing on it as it does a write by block. Odin did not format the data partition resulting in old contacts data being present. The tarball file you used must be missing the blank data which is typically used to overwrite the data partition.