Custom labels are used to declare your static data. For expl error messages in apex. Instead going and changing the error message directly in the code. You can just change the value in the custom label which will be referenced in your code. This makes users more easier to update any static values.
In apex you can reference it using system.label.Api_Name In VF page you can reference it using $Label.Api_Name
here the link for it
https://help.salesforce.com/HTViewHelpDoc?id=cl_about.htm&language=en_US
For expl error messages in apex. Instead going and changing the error message directly in the code. You can just change the value in the custom label which will be referenced in your code.
This makes users more easier to update any static values.
In apex you can reference it using system.label.Api_Name
In VF page you can reference it using $Label.Api_Name