В чем разница между событиями «child_added» і «value» в Firebase ?

Каждое из этих событий является особым способом обработки синхронизации данных между клиентами. Событие Value будет срабатывать каждый раз, когда обновляется какая-либо часть данных. Это может быть, только-что добавленный ключ, удаленный ключа или обновление любого значения в ссылке. Когда происходит изменение, SDK отправляет обратно полное состояние объекта, а не только ту часть, которая изменилась.

Событие, child_added, будет срабатывать один раз для существующей части данных, значение snapshot.val() будет отдельной записью, а не всем списком, как в случае с «value» .
По мере поступления большего количества ключей — это событие будет срабатывать с каждым элементом.

При выборке событие child_added вызиваеется для каждого дочернего узла, по которому делается запрос. Если таких узлов не найдено, событие не произойдет. Это значит для проверки что узел существует нужно использовать value обработчик. И так как запрос может иметь несколько результатов, вам нужно будет перебрать их.