I will try to explain them as I worked with them. Please understand that definitions may be muddy and vary from organization to organization.
Project Manager: Responsible for coordinating the project schedule within the design framework. This should be the only person with whom management can be guided in order to find out the current status of the perfect work for this issue. This person, as a rule, runs deep in tables, Gantt charts and status meetings.
Product Manager: Responsible for deciding which user-visible functions will be on the tablet for review in this release. This person should be well versed in the fact that the client is trying to use the software and can act as a developer’s resource to understand what should be built in terms of functionality.
Program Manager: In essence, the project manager is responsible for coordinating the release of various disciplines in the company. This is one who is sure that marketing has a press release, ready at the same time that the engineer is ready to ship and that the sales are trained on the product.
This is how the last couple of companies that I worked on work, defined roles, but you will surely see many options.
source share