Можно ли сделать так что бы hover эффект срабатывал только если навести на ссылку в теге "a"но не на тег "ul " ?
Да, можно. Он и сейчас срабатывает не на ul, а на li. А кажется вам, что на ul, потому что наведение на псевдоэлемент считается наведением и на родителя тоже, что логично.
Если надо при наведении на a, то и перепишите это .nav-btn .nav li:before и .nav-btn .nav li:hover:before с li на a.
Чтобы не срабатывало при наведении на before задайте ему
pointer-events: none;
.