1. Upgrading packages There's no notion of "upgrade" action in dpkg/apt. For example, if there are 10 libqt-* packages and "A" is a subset of 5 packages that I have installed and "B" is a subset of 5 packages that I don't have installed and don't want to have installed, I cannot easily upgrade just the libqt-A set. I need to specify each package from the "A" set manually when calling "dpkg -i" or "apt-get install". RPM has -F option (freshen) that updates only the packages that are already installed. Poldek (apt-get alike) utility also has "upgrade" command. I can do "rpm -F libqt-*" and have only libqt-A set upgraded, leaving libqt-B not installed.
upgrade upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available.
2. Dependency tracking One can successfully "dpkg -i" a package with an unmet dependency. Such package will be installed but not "configured" rendering it unusable. RPM won't allow such action, as it will fail saying there are unmet dependencies. User has a clear message that there was an error and the package is not left in some state of limbo. Both apt-get and poldek utilities allow automatic installation of dependencies though.