user customizations to meet specific requirements.
When the program is run, SAP checks to see if the user has setup any logic within these hooks.
For example in the fixed asset module lets say the gain/loss from disposal is normally booked to GL account 65410. During posting however you wish to book certain asset retirement transaction types to 65499 for reporting purposes. An enhancement AINT0002 exists to do this.
User exits are commonly used also with validation and substitution rules.
To implement user exist you need an understanding of the ABAP programming language. However for those who have worked across several SAP projects its inevitable that at some point they will have come across user exits at some stage even if its just at a conceptual level.