Все функции надо вызывать циклически.
Т.е вставить все вызовы туда, где отсчитываются секунды
И то, что должно меняться туда же
function sec() {
    if(dot.style.color == "black") {
    dot.style.color = "white";
    }
    else {
    dot.style.color = "black";
    }
// тут вызовы функций в необходимой последовательности
   openCloseStatys();
   remainsFun();
   ......
  hoursInput.innerHTML = `${hours}`;
  minutesInput.innerHTML = `${minutes}`;
  remains.innerHTML = `${openClose}${rezult_1} ча${endingHour} ${rezult_2} минут${endingMinut}`;
}
Вот этого 
function remainsFun(){
    if(hours>=20){
    openClose = open;
    }
    else if(hours>=0&&hours<=8){
    openClose = open;
    }
    else if(hours>=8&&hours<=20){
    openClose = close;
    }
    }
remainsFun();  
 
function timeHours(){
    if(hours>=20&&hours<=23){
    rezult_1 = hoursOpen - hours + 24;
    }
    else if(hours>=0&&hours<=8){
    rezult_1 = hoursOpen - hours;
    }
    else if(hours>=8&&hours<=20){
    rezult_1 = hoursClose - hours;
    }
    }
timeHours();
быть не должно. Зачем вызывать функцию сразу после ее определения?