APN refers to 'Access Point Name', and it is the logical name of the network, which the mobile network users connect to. The PS core network may connect to one or more of them.
By controlling routing of the traffic going to everyone of them, you will be able to give different services for users accessing different ones.
As example, you may configure traffic going to one of them in order to pass by a server that analyzes users traffic. Also, you may allow users to only access a few pre-determined server IPs, and prevent them from accessing the internet.
The APN name is one of the parameters exist in the subscription data, which exist in the HLR for every MS. You may configure every MS to access one or more of them. You may do this by inserting those APNs in the MS subscription data exist in the HLR.
When the MS request to access one APN in the “PDP activation” procedure, the SGSN will match it with the names exist in the subscription data for this MS. This is to make sure the MS can access this one.
'Public APN', is the one the ordinary telecom users are accessing. Most probably, it allows the users to connect to the internet, and all the services they are trying to access.
'Private' or 'Corporate' APN, is the one that serve a certain company in the market.
A corporate, or a company, may request their users to be able to access company servers remotely. Therefore, the company may ask the telecom service provider to create an APN for their company.
Most probably, in this case users are allowed to connect only to certain pre-defined servers, and prevent them from accessing the internet.
Finally this will be as agreed between the company and the telecom service provider.