Some other things I learnt.
To expand storage, you can replace the existing drives one by one within a vdev (the lowest common drive capacity within the vdev will be counted for each drive) or you can add more drives by creating another vdevs. "You can combine differing size vdev's together in a single pool. You only lose the available space on a drive when you combine different sized drives in the same vdev." Once a vdev is created, you cant remove it. And failure of a vdev means the pool will be irrecoverable. Therefore make sure to have higher raids (raidz-2 or higher is preferable) within the vdevs.
If I would like to add ssds to my nas (for apps like VM and game servers), it's better to create another pool with them instead of adding them to the hdd pools to take advantage of the higher speed. Got the suggestion from this thread https://www.truenas.com/community/threads/can-you-specify-the-vdev-where-data-is-saved.12963/
There are cache drives in zfs but using RAM is recommended. More ram, the better. Also ECC ram is a high priority https://www.truenas.com/community/threads/ecc-vs-non-ecc-ram-and-zfs.15449/
Powersupply sizing guidance https://forums.freenas.org/index.php?threads/proper-power-supply-sizing-guidance.38811/
Also CMR drives > SMR drives, helps while rebuilding raid array (a bit controversial topic)
(At this point, this thread is not just about zfs but also intro to hardware but i'm not sure how to edit the title)
After picking the right hardware (including disks), how to spot failures early on https://www.truenas.com/community/threads/building-burn-in-and-testing-your-freenas-system.17750/
Personally, as a newbie, I am not wiling to invest so much money into getting the right hardware so i'll just use old desktops laying around and instead backup to another system regularly so I dont lose data (3-2-1 backup rule !)