Контексты образуют дерево. Отмена родительского контекста каскадно отменяет все дочерние (созданные через WithCancel, WithTimeout, WithValue от этого контекста). Обратное неверно: отмена дочернего не влияет на родительский.
parent, cancelParent := context.WithCancel(context.Background())
child, _ := context.WithTimeout(parent, time.Second)
cancelParent() // child тоже отменён, ctx.Done() закрыт
Так можно отменить целое поддерево операций (например, все запросы в рамках HTTP-обработчика).