Both packages seem to download packages and update some profiles, but why do I need both?
For users coming from other package managers, the following rough analogies may apply. But don't infer too much from it, because GUIX allows every user to use their own set of packages and even their own version of GUIX!
guix pull is similar to
apt-get update in that it downloads a new list of available packages, substitutes and derivations. However, it also installs a new version of GUIX for you! (because of reasons)
guix package -i (synonym
guix install) and
guix package -u are similar to
apt-get install or
apt-get upgrade in that you can install/upgrade packages, but only, if you've gotten an updated package list (
guix pull) before.
They change different profiles that exist for different tasks
guix pullchanges the profile
~/.config/guix/current. This profile is for the task of creating profiles and everything related (e.g. installing packages).
guix installor its synonym
guix package -ichanges the profile
~/.guix-profile. This profile is for the job of doing whatever productive (?) work you are doing.
See this SO question for more infos about those profiles