@whatzaname `su` is used to switch user context to another user, by default to `root`. It requires the user to know the target user's password, which is a security risk. Because it's typically used to switch to a `root` shell, it exposes the system to all kinds of accidental damage as all commands are now executed with `root` privilege.
`sudo` is mainly used to execute one command at the time with `root` permission. It requires the user to know its own password. Because the user remains in its own context, accidental damage to the system is limited to the commands specifically executed through `sudo`.
There are other `sudo` advantages in multi-user contexts, but even for a single user system it's a healthy best practice.