Functions declared as stable are unlikely to change in the near future and are comparatively well tested. Sometimes even unit-tests are available.
Functions declared as unstable are not well tested but are more or less finished such that the implementation may change but not the API.
Functions declared as experimental are highly likely to change. You should take extreme care when using such functions (and submit a patch).
Funcions declared as work in progress are not finished and should not be used.
Obsolete functions should not be used, since they are going to disappear soon.