Public comments are exposed through Self-Help Portals, Customer Portals, Communities, etc. They are public-facing comments that are meant to be communication between your customers and your employees. Internal comments are are meant as comments between internal employees that should not be exposed to customers.
For example, a public comment might ask the customer if they've rebooted their devices to see if that resolved the problem. An internal comment might include an internal tracking bug number with some code that is not meant to be shown to a customer, as it might leak intellectual property, grant access to systems a customer should not have access to, expose potential vulnerabilities, etc.
The above examples are obviously based on a software-support organization, but you should be able to apply these principles in any business. There are things your customer should know, or direct communique to your customers, and there are things to be hidden from your customers, and are only useful internally and/or may be harmful if leaked outside internal employees.
The Internal Comments field is sent to the CaseComment object with
IsPublished set to "false".