Ну как сказать, если я правильно понимаю, символ ? просто допускает, что данный тип может принимать значение null (Да, проверил,
вот ссылка).
Во втором примере вы явно проверяете на значение отличное от null, И ТОЛЬКО ТОГДА вызываете метод disconnect()
Разница двух примеров в том, что в первом случае вы всегда будете вызывать метод disconnect(), а во втором, если объект resizeObserver не будет равен null
UPD: да, на счёт кода. При написании кода (Помимо архитектуры, официальных конвенций по написанию кода и т.д.) опирайтесь на два фактора:
- Ваш код может легко понять кто-то другой
- Через две недели вы сможете посмотреть на этот код и понять что он делает и зачем, так будто вы его написали 2 часа назад (грубо говоря)
- Ваш код может легко изменить кто-то другой