I, too, have experimented with the AY-3-8910 many years ago. I used to have a few of these in my parts box, but they were lost (along w/the datasheets for them) in a fire several years ago :(
To answer your question regarding "what is a API", it is true what Arachnocomputer said that it stands for "Application Programming Interface". This is simply a short way of saying "a collection of subroutines/functions that make interacting with the device (or whatever) a bit easier".
What this means in this instance is that it would be a good idea to start by creating a few functions that do basic operations on the AY-3-8910. Were I in your position, I'd start by writing two functions: PSGWriteRegister(reg, value) and perhaps Value = PSGReadRegister(reg). After you have these two functions in your "API", you could expand it by creating functions like PSGPlayTone(channel, frequency) and PSGSetMixer(). Functions like this would likely use the first two functions suggested above (e.g. PSGWriteRegister()). I don't remember enough about AY-3-8910's capabilities to suggest additional functions, but hopefully this will give you an idea what we mean when we speak of a "API".
Last IMHO comment: A well-designed API, that closely models the hardware that it is intended to control, and "abstracts" that hardware into a collection of functions/methods/classes that control various aspects of it can make programming a much less tedious task. The Wiring library (API) that is included in Arduino "sketches" is an example of a API that "abstracts" many of the capabilities of the AVR microcontroller and "hides" many of the gritty details involved in such things as setting up the timers for PWM generation, acquiring analog data using the ADC, performing input/output to the USART, and so forth. When you use functions such as Serial.init() and writeDigital() you are making use of the Wiring API.