ht was initially defined as a differential function, which value is the same in output and in the next LSTM cell.
LSTM uses the previous steps in a sequential way and chooses whether to memorize or forget according to h(t-1) and C(t-1) and the inner weights, to set h(t) and C(t). h(t) is the cell's output, and it is sent to the next cell in order to keep a sequential logic.
It is quite complex to explain in a few words but let's say that the forget and memorize weights are set during the training process thanks to an auto-regulated system (named "the constant error carrousel") that takes into account several scenarios and at the same time avoids the neurons to diverge during training.
See main publication: https://www.researchgate.net/publication/13853244_Long_Short-term_Memory
Note: Google spent 10 years understanding LSTM's publication. It's very complex but very interesting.