ServiceNow customization is being used when standard configuration cannot provide enough power to implement desired functionality and meet requirements.
Customization is about writing custom scripts and programming code.
With custom development you can implement any additional functionality for your ServiceNow instance.
ServiceNow customization can be done on a project-based approach, when you have a project scope/list of requirements defined. It can also be accomplished on-demand, on an hourly-basis, when you may not have the exact scope, but you have dedicated technicians available for you on demand.