Are primary keys and foreign keys just a unique id?
Primary keys act as a unique identifier for a tuple, yes. Foreign keys are not. A foreign key is simply a reference to another tuple in another table. However, since multiple tuples can have a foreign key that points to the same tuple, it is not unique.
Why not just call them unique ids?
Because there are multiple kinds of keys, and primary keys are just one type. Calling them a unique ID would be extraneous vocabulary. Furthermore, nothing is stopping another candidate key from also having a unique ID (e.x. a table that has User ID as a primary key, but also has SSN), so that would lead to confusion.
because calling them "primary keys" or "foreign keys" sounds odd to me
They might now, but once you understand the concepts behind these and how they differ from UUIDs and other similar terms, you'll understand why they are called that.