How to properly suspend via command

Solution 1:

AFAIK the correct command is systemctl suspend or hibernate as this command uses Systemd and is preferred since 16.04

Link to prior similar question. In the comments/answers section they say the old dbus method (which is your first example command) supposedly was deprecated

Solution 2:

In systems before 15.04 you use dbus approach only. On Ubuntu 15.04 and newer you use both, because Ubuntu started systemd init system. Both are proper, they just use different programs to achieve same result.

Difference is that systemd is init system, it controls starting other processes at boot. dbus isterprocess communication system and is most useful in desktop to allow users do some tasks without need for root access