The RFC says the content-length
header is optional ("..Applications SHOULD use this field...").
From what I can gather if its not included then the client will not know how much data to expect, therefore will not be able to show a determinate progress bar when downloading the body (i.e. the top bar instead of the bottom).
Are there any other side effects or bugs that arise from omitting this header?
I think your implicit question is "How does a client detect the end of an HTTP message?". See RFC 7230 - HTTP/1.1 Message Syntax and Routing - Message Body Length:
When the server omits the content-length header, it has to use one of the other mechanisms to indicate the end of the message.
So to answer your question: scenarios 3 (chunking) and 7 (reading until the server closes the connection) are the ones where the client doesn't know the length on beforehand.