I'm going to answer the first part of my own question.
After upgrading my iPod Touch to iOS 5, Location Services started working again. Not only did it start working, it's showing the location as a point in the street in front of the house.
1) The location I manually submitted to Skyhook in 2009 was in the street farther south, by the mailbox, so the old data point is not being used. Not suprised since I have no reason to believe that Apple went back to Skyhook. A visit to Skyhook's website verified that this point has not changed.
2) The location that Apple started using last year was a point on the main highway 1/2 mile east of here.
So somehow Apple has independently obtained new data about my wifi location. It's possible that during a recent party, somebody with an iPhone had connected to my Wifi and that data was sent back to Apple. It's also possible that a Wifi data collection vehicle drove down this road. It's very rural with only three homes on a one mile stretch, so although possible it's difficult to believe.
It was my previous understanding that Apple started requiring that devices be within range of several Wifi signals to improve Location Services accuracy. Being in a rural location, it's nearly impossible for my iPod to pick up any Wifi signal other than my own. With Skyhook, this was never an issue.
However, iOS 5 seems to heavily depend on Location Services so maybe they've changed something critical to how it functions in order to improve accuracy without requiring multiple Wifi signals.
I'm going to accept my own answer. If anyone has a better answer to my original question, I'll consider accepting that instead.
Your home and work geo-location are picked up from your contacts card in the Contacts app (on iOS devices). To manage where your home or work is, edit the relevant addresses in the Contacts app, under 'add new address'.
You can also edit other peoples addresses, add shops, the gym, clubs, etc, and it will use this data.
There is nothing directly on the iOS device to provide the coordinates. Through the iOS developer sdk you can access the CLVisit class which has the following properties:
coordinate- which will give you the geographic coordinates horizontalAccuracy- gives the horizontal accuracy of the above coordinates arrivalDate- date arrived to location departureDate- date departed location
There is also a CLFloor class which has the following property
level- which will give you a value for the floor. 0 bring ground floor, 2 being 2 floors above the ground floor, etc.