Cookies would be better for storing information on the client over a long period of time (from one session to the next). Session variables only live as long as the session (effectively, until the client is shut down).
In PHP, session data is not stored on the client, only a unique identifier is, that PHP then uses to look that client's record up on the server. Cookies can be used this way as well (keeping an identifier on the client, but the data itself on the server), but then cookies can be used to store whatever. (Cookie is a fairly old term).
PHP's sessioning system uses cookies to store session identifiers on the client when it can, and embeds the identifier in the URL when it can't.