It is a work product expressed in terms of functionality as seen by the user.
Count fields on windows, screens, reports.
Count the types of data being tracked and interfaced.
The adjustment factor takes things like performance, communication, technology, environment, and business rules into account.
I like function point counts because it gives you a constant, derivable number that everyone understands and can discuss. It removes some of the politics and variability inherent in estimating.
Convert the function point to hours based on the technology, tools, and experience.
It has problems.
On large systems it is time consuming.
It does not do conversions and technology upgrades well (e.g., Y2K or install a new version of Oracle).
Like any internal system documentation, it is difficult to maintain.