'Classes' folder and PrivatePCH - What are they?

Basically I have two questions:

1- What’s the difference between a ‘Classes’ folder and a ‘Public’ folder? How do I know which headers to put in which folder?

2- What’s the purpose of the MyModulePrivatePCH file in a module? How do I know which includes to put there and which includes to put elsewhere? What difference does it make?

From my understanding the Classes folder are for classes that are publicly exposed to other modules for your API. Public is something that are accessible to the module. The biggest difference is that Classes contains only Headers (.h) while Public can contain definitions (.cpp). The private PCH is a compiler optimization. This is where you would put includes for headers that are not frequently changed (like engines and Epic generated code) and are used in wide areas of your module/plugin/game.

Directory layout info.