SQL Server service is the database engine. The Agent is dependent upon the SQL Server service, meaning you can't startup the Agent unless the main service is started. The Agent is used for things like scheduled jobs. No need to have separate memory since it uses the memory of the SQL Server process.
sql server is the name of the product. It has various components implemented as services like database engine component denoted by SQL Server service, Reporting Services denoted by Reporting Services service etc. SQL Server Agent service denotes the scheduler component of SQL server called agent which is used for automated execution of scheduled tasks created on the SQL Server. It has no other function other than managing automatic execution of jobs as well as taking care of schedule etc. All the data/metadata required by agent are stored by itself in a system database called msdb. Thats why it doesnt require any memory by itself compared to database services etc