As you know well, servlet is loaded at first request. That means it consumes more time at first request. If you specify the load-on-startup in web.xml, servlet will be loaded at project deployment time or server start. So, it will take less time for responding to first request.
So if you have any servlet which takes lot of time during initialization ie. connecting to database, reading files etc. Better to specify load on startup for these kinds of servlet, so that they can be initialized during application startup. Thus making first request to be faster.
The load-on-startup element indicates that this servlet should be
loaded (instantiated and have its init() called) on the startup of the
web application. The optional contents of these element must be an
integer indicating the order in which the servlet should be loaded. If
the value is a negative integer, or the element is not present, the
container is free to load the servlet whenever it chooses. If the
value is a positive 128 integer or 0, the container must load and
initialize the servlet as the application is deployed. The container
must guarantee that servlets marked with lower integers are loaded
before servlets marked with higher integers. The container may choose
the order of loading of servlets with the same load-on-start-up value.