There is a better way, create a single 3 TB pool composed of two mirrors.
zpool create test mirror disk1 disk2 mirror disk3 disk4
with disk1 and disk2 being the 1TB disks and disk3 and disk4 being the 2 TB ones.
Edit:
Should you want to maximize size and do not care that much about performance or
best practices, you can partition all the drives with equal size partitions (or
slices) and create a 4 TB hybrid pool with a 4 vdev RAIDZ and a 2 vdev mirror.
zpool create -f test raidz d0p1 d1p1 d2p1 d3p1 mirror d0p2 d1p2
Note the "-f" option required to force the command to accept the replication level mismatch.
Before we go into specifics, consider your use case. Are you storing photos, MP3's and DVD rips? If so, you might not care whether you permanently lose a single block from the array. On the other hand, if it's important data, this might be a disaster.
The statement that RAIDZ-1 is "not good enough for real world failures" is because you are likely to have a latent media error on one of your surviving disks when reconstruction time comes. The same logic applies to RAID5.
ZFS mitigates this failure to some extent. If a RAID5 device can't be reconstructed, you are pretty much out of luck; copy your (remaining) data off and rebuild from scratch. With ZFS, on the other hand, it will reconstruct all but the bad chunk, and let the administrator "clear" the errors. You'll lose a file/portion of a file, but you won't lose the entire array. And, of course, ZFS's parity checking means that you will be reliably informed that there's an error. Otherwise, I believe it's possible (although unlikely) that multiple errors will result in a rebuild apparently succeeding, but giving you back bad data.
Since ZFS is a "Rampant Layering Violation," it also knows which areas don't have data on them, and can skip them in the rebuild. So if your array is half empty you're half as likely to have a rebuild error.
You can reduce the likelihood of these kinds of rebuild errors on any RAID level by doing regular "zpool scrubs" or "mdadm checks"of your array. There are similar commands/processes for other RAID's; e.g., LSI/dell PERC raid cards call this "patrol read." These go read everything, which may help the disk drives find failing sectors, and reassign them, before they become permanent. If they are permanent, the RAID system (ZFS/md/raid card/whatever) can rebuild the data from parity.
Even if you use RAIDZ2 or RAID6, regular scrubs are important.
One final note - RAID of any sort is not a substitute for backups - it won't protect you against accidental deletion, ransomware, etc. Although regular ZFS snapshots can be part of a backup strategy.
Best Answer
the only difference between using the whole disk to create a pool and part of a disk is that you have to partition the disk first. so on your 2 TB drives, create 2 partitions, each 1 TB, using whatever partition tool you choose. (that would not be a zfs utility, but instead something like fdisk.)
then when you issue your zpool command, pass the partition instead of the drive:
and the same for the 1 TB mirror: