Generally use classes, all the way down. There isn’t generally a good reason for applying styling using IDs. They are very useful for form inputs/label relationships, and can be very useful for JS. But not so much for styling.
Try to avoid nesting selectors. So prefer
.my-nav {}
.my-nav-link {}
To
nav {}
nav a {}
Be specific, not generic (normally use classes rather than targeting tags). And understand CSS specificity; using flat classes will allow you avoid the pitfalls of specificity & the CSS cascade.
Nesting stuff is ok in specific cases, but don’t overuse it because it will make your styles difficult to maintain and change.