space-between w menu-right nie działa ponieważ dodajesz później właściwość justify-content: flex-end, a z racji tego że CSS zczytuje style po koleji od góry do dołu to zawsze używa ostatniej przypisanej właściwości. A po drugie nie działa na niego space-between bo zapomniałaś o kropce przy nazwie klasy. W odpowiedzi na Twoje pierwsze pytanie to raczej nie obejdzie się bez tych divów. Jedyne rozwiązanie jakie przychodzi mi na myśl to wrzucenie wszystkich buttonow do jednego diva, nadanie mu flexa i space-between, a dla .btn4 nadać jakiś margines, wtedy uzyskasz taki efekt ale nie jestem przekonany do jakości tego rozwiązania.