Как сократить код и сделать более понятным?
Вы же прямо в вопросе написали условия, достаточно их прямо так в коде и повторить, чтобы он стал понятнее:
function sayHello(animal) {
    if (['dog', 'cat', 'cow'].includes(animal)) {
        latestFriendlyAnimal = animal;

        return 'Hello';
    }

    if (animal === 'lion' && check) {
        latestFriendlyAnimal = animal;
    }

    return check ? 'Hello' : 'Growl';
}

Можно ещё немного упростить:
function sayHello(animal) {
    let isKnownAndFriendly = ['dog', 'cat', 'cow'].includes(animal) || (animal === 'lion' && check);

    if (isKnownAndFriendly) {
        latestFriendlyAnimal = animal;

        return 'Hello';
    }

    return check ? 'Hello' : 'Growl';
}
так тоже можно 
let check = true;
let latestFriendlyAnimal = '';

function sayHello(animal) {

  if(check && !(['lion', 'cat', 'dog', 'cow'].includes(animal))) return "Growl"
  
  if((check && animal === 'lion') || ['dog', 'cat', 'cow'].includes(animal)) {
  	latestFriendlyAnimal = animal
    return animal
  }
  
  return 'Hello';
}

console.log(sayHello('dog'));

console.log(latestFriendlyAnimal);