Countdown click in JavaScript
I have the following ideas for improvement of your code:

Separate different concepts like timers and UI rendering to make them easy to understand and change.
Use milliseconds for consistency with browser API.
Separate formatting and calculation for dates and durations.
Incapsulate mutable state in objects so it won't leak in your main application logic (let interval).
Don't use the substr function to format time because this solution is not robust. Write custom formatter or use a library like momentjs instead.

Here is my solution:
class Timer {
    constructor(duration, delay = 1000) {
        this._remaining = duration;
        this._delay = delay;
        this._callbacks = [];
    }

    start() {
        this._intervalId = setInterval(this._tick.bind(this), this._delay);
    }

    stop() {
        clearInterval(this._intervalId);
    }

    onTick(callback) {
        this._callbacks.push(callback);
    }

    _tick() {
        this._remaining -= this._delay;
        if (this._remaining &lt;= 0) this.stop();
        this._callbacks.forEach((cb) =&gt; cb(this._remaining));
    }
}

class Timers {
    makeActive(timer) {
        this._activeTimer = timer;
    }

    stopActive() {
        if (this._activeTimer) this._activeTimer.stop();
    }
}

// I didn't change formatting implementation here because I am lazy
const formatHMS = (date) =&gt; date.toISOString().substr(11, 8);
const formatLocaleHMS = (date) =&gt; date.toLocaleTimeString().substr(0, 8);

const dateIn = (duration) =&gt; {
    const date = new Date(0);
    date.setMilliseconds(Date.now() + duration);
    return date;
}

const durationToDate = (duration) =&gt; {
    const date = new Date(0);
    date.setMilliseconds(duration);
    return date;
}

const timeControls = document.querySelector('.timer__controls');
const timeLeft = document.querySelector('.display__time-left');
const endTime = document.querySelector('.display__end-time');

const displayRemaining = (duration) =&gt; {
    timeLeft.textContent = formatHMS(durationToDate(duration));
}

const displayEnd = (duration) =&gt; {
    endTime.textContent = `Be back at ${formatLocaleHMS(dateIn(duration))}`;
}

const timers = new Timers();

const startAndUpdate = (duration) =&gt; {
    displayRemaining(duration);
    displayEnd(duration);

    const timer = new Timer(duration);
    timer.start();
    timer.onTick(displayRemaining);

    timers.stopActive();
    timers.makeActive(timer);
};

const secondsToMs = (seconds) =&gt; seconds * 1000;
timeControls.addEventListener('click', (e) =&gt; {
    const button = e.target.closest('button');
    if (button) startAndUpdate(secondsToMs(parseInt(button.dataset.time)));
});

const minutesToMs = (minutes) =&gt; secondsToMs(minutes * 60);
document.customForm.addEventListener('submit', function (e) {
    e.preventDefault();
    const value = this.minutes.value;
    if (value !== '') startAndUpdate(minutesToMs(parseInt(value)));
});