For starts consider a WebRole to be like a Web Server with IIS. You can host ASP.Net/PHP/Fast CGI applications / Web Services in a Web Role. So when you need to have an external facing endpoint you can use a WebRole.
A Worker role is better suited for background processing (Async) operations. There sould be many topologies in which you could use your web/worker roles.
A simple example would be a transaction processing system which has a web front/service for accepting operations and pushes the tasks to a queue which is monitored by a worker role which picks up the tasks and processes the transactions.
Do consider going through the training kit at least once to understand the concepts.
now please tell me is it necessary to use web role in azure app.?
No. There is absolutely no requirement that you run any type of role in an Azure Service. Obviously you do need to have at least one role. For example, you could run a large-scale simulation with multiple instances of a worker role and no web role.