ACK messages are needed for TCP handshaking. However, I've read some articles that explain another appearance of ACK messages while the actual data transmission; the sender needs to wait for an ACK message from the receiver indicates the following byte to be sent. Is that correct? Can somebody explain why we call it ACK messages as well?
TCP is a connection oriented protocol over connection-less network IP. Hence to have a notion of connection, each end has to acknowledge the data received from other end. This is achieved through ACK messages (or acknowledgement messages). For TCP to work correctly every transferred byte needs to be acknowledged (only then it will be a connection oriented protocol). However, note this does not mean every packet sent needs to be replied with an Acknowledgement message. What is needed is 'eventually' all the data sent is acknowledged. Replying to every sent packet would severely affect the throughput, so normally a sender can continue sending messages keeping certain amount of data unacknowledged. This is called TCP Window. There is more to it than this simple explanation and most of TCP's complexities come from - trying to keep a window such that throughput (in bytes/sec is maximized). There may be plenty of resources online. I strongly suggest reading 'TCP/IP Illustrated - Volume 1' for a better understanding of IP networking and TCP.