We use the term "Ego" to refer to the fact that users in GNUnet can have multiple unlinkable identities, in the sense of alter egos. The ability to have more than one identity is crucial, as we may want to keep our egos for business separate from those we use for political activities or romance.
Egos in GNUnet are technically equivalent to identities (and the code does not distinguish between them). We simply sometimes use the term "ego" to stress that you can have more than one.
In GNUnet users are identified via a public key, and that public key is then often referred to as the "Identity" of the user. However, the concept is not as draconian as it often is in real life where many are forced to have one name, one passport and one unique identification number.
As long as identities in GNUnet are simply public keys, users are free to create any number of identities, and we call those egos to emphasize the difference. Even though users can create such egos freely, it is possible to have an ego certified by some certification authority, resulting in something that more closely resembles the traditional concept of an identity.
For example, a university may certify the identities of its students such that they can prove that they are studying. Students may keep their (certified) student identity separate from other egos that they use for other activities in life.
A pseudonym is an ego that is specifically intended to not be linked to one's real name. GNUnet users can create many egos, and thus also many pseudonyms.
Repeated uses of the same pseudonym are linkable by definition, as they involve the same public key. Anonymity requires the use of either the special "anonymous" pseudonym (for GNUnet, this is the neutral element on the elliptic curve) or a throw-away pseudonym that is only used once.
The GNU Name System allows every ego (or identity) to securely and privately associate any number of label-value pairs with an ego. The values are called record sets following the terminology of the Domain Name System (DNS). The mapping of labels to record sets for a given ego is called a namespace.
If records are made public and thus published, it is possible for other users to lookup the record given the ego's public key and the label. Here, not only the label can thus act as a passphrase but also the public key -- which despite its name may not be public knowledge and is never disclosed by the GNS protocol itself.
A "peer" is an instance of GNUnet with its own per-instance public key and network addresses. Technically, it is possible to run multiple peers on the same host, but this only makes sense for testing.
By design GNUnet supports multiple users to share the same peer, just as UNIX is a multi-user system. A "peer" typically consists of a set of foundational GNUnet services running as the "gnunet" user and allowing all users in the "gnunet" group to utilize the API. On multi-user systems, additional "personalized" services may be required per user.
While peers are also identified by public keys, these public keys are completely unrelated to egos or identities. Namespaces cannot be associated with a peer, only with egos.