How to make a complete backup of an Android device

I am quite new to Android and
I would like to be able to make a complete backup of an Android smartphone storage so that I can restore everything in case I mess it up or it breaks. My plan is to buy another phone of exactly the same model and restore my image to it so that I get exactly the same system back as the old one was at the time of the backup.

I have some experience doing this with a laptop. In this case I boot the laptop using an external USB stick with a live Linux distribution (let’s say the USB stick is /dev/sdb after boot), attach an external drive (seen as /dev/sdc) that is larger than my laptop’s internal disk (/dev/sda). From the live system I then do something like:

# mount /dev/sdc1 /mnt
# dd if=/dev/sda of=/mnt/sda.img
# umount /mnt
# reboot

The procedure for restoring the image is similar.

I have found some guides and questions on how to do this on Android but most of them show how to backup user files or individual partitions, which is not what I want.

I illustrate my questions with reference to this guide (from which I would prefer the adb + dd method, because it does not require to install additional software).

Question 1 The guide says that I should root the device: why is this needed?

Question 2 The guide shows how to make images of individual partitions but I would like to make an image of the whole system device with something like

dd if=/dev/mtd of=...

Would this work at all? Since I have to boot the device in order to connect to it with adb, will one or more partitions be mounted? Of course, I do not want this: all filesystems should be unmounted while I perform the backup.

Question 3 Is it possible to transfer the image over to my laptop directly, without writing it to an SD-card?