Здесь нет тернарного выражения, то есть это не "если ? то : иначе". Это сокращенная форма записи на случай если нет объекта. То есть если ты запишешь так:
this.state.done, а объекта this.state нету, то ты получишь ошибку и твой код развалится. В классическом варианте ты должен записать this.state && this.state.done
Здесь же мы указываем знак вопроса, чтобы бабель за нас создал необходимые проверки. То есть мы пишем this.state?.done, указывая, что мы обращаемся к свойству done объекта this.state, но надо проверить если ли этот объект. Подробнее читай здесь: https://learn.javascript.ru/optional-chaining

В твоем случае при с классическим синтаксисом пришлось бы писать так:
handleCardClick = () => { this.setState({ done: !(this.state && this.state.done), }) }
Или так:
handleCardClick = () => { this.setState({ done: this.state && this.state.done ? false : true, }) }