How does the iPhone learn new WiFi locations in terms of using them for location estimates

Apple uses their own database since iOS 3.2 (prior to that they used Skyhook Wireless). This works by sending WiFi MAC addresses to Apple by GPS-enabled iOS devices. So if the device has a GPS fix, it automatically sends all WiFi MAC addresses it sees alongside with the GPS-detected location to Apple. There's no option to change this behavior except the master Core Location switch. Users have to accept this transmission of seen WiFi MAC addresses in the EULA.

Location detection via WiFi works the opposite way by sending all seen WiFi MAC addresses to Apple and they respond with the location. Actually they heavily optimize this by caching as many WiFi addresses on the phone as possible. So this even works (to some degree) on iPod touch without any network connectivity.

A weak spot of this algorithm are MiFi and similar devices (relocating WiFi hotspots). Currently, Core Location does not do a very good job of discarding obviously wrong WiFi locations. For instance, on indoor trade shows without GPS reception, be prepared to get wrong location updates because of the many MiFi devices out there.

To respond to your question about manually adding WiFi hotspots: no, there's no way to do that. Just use a GPS enabled iPhone/iPad running iOS 3.2 or higher and the MAC address will make its way into the database eventually. In my experience, this happens rather quickly.