Field Access API provide an wrapper to let other modules easily implement any access criteria for fields, both for view and edit mode.
It let developers define any custom rule for granting or not access to a specific field.
It is an API module, so doesn't provide any end-user feature on its own, and is intended for developers. Install it only if another module requires it or you want to make your own implementation.
If what you are looking for is an out-of-the-box way to limit field access based on user role, you should use Field Permissions instead.
The access rules are set on the field's UI, and can be applied either to the field instance, or set to be overridable for each entity where the field appears on.
Modules can declare 4 types of implementations, using hook_fieldaccess_info :
"edit" and "view" ones, to deal with granting or not access to the field, for the respective operation.
"edit override" and "view override" ones, to be able to change the field rendering instead of just omitting it, in case the user has been refused access (eg, showing the value of a field while keeping it not editable on an entity edit form instead of not displaying it at all).
See README for implementations examples and usage.