There are many applications that rely only on the standard cursors (normal cursor for pointing at something, cursor for showing an operation is currently in progress, text cursor etc.) that are shipped with the operating system. There are also a lot of applications that have their own custom set of cursors. And last but not least we have applications that have custom cursors that are confusing (even after a decent amount of use) and applications that might have had better UX if they had custom cursors (imho Blender could have done with some of those).
On one hand this allows the user to have something familiar in the new environment (software application) just like using OS-styled buttons, scrollbars, textfields ec.
On the other hand custom cursors (bucket tool, pencil etc. in all Paint-like application is a nice example for these types of cursors) can provide essential application-specific information the visualization of which may otherwise prove to be too difficult.
My question is probably too broad but I would like to know how people usually determine whether or not to use custom cursors. When exactly comes the point where a designer says "Ok, we need to introduce custom cursor X because Y."?