If all of the pages on your web site are actually linked together in some way then once the search engines find any page of your site then they ought to be able to follow the links to find all the other pages of the site. Designing the way your pages are linked together is important not only so as to ensure that the search engines can find all the pages but more importantly so that the real visitors that you get to your site can find the pages containing the information that they are looking for.
One way that you can ensure that your visitors know about all the pages on your site is to provide them with a sitemap page which has a list of links to all of the pages on your site. Hopefully your visitors will have no difficnulty in finding what they are looking for by following your regular navigation menus to reach the desired page. No one navigation system is going to be perfect for all of your visitors though and a sitemap provides a fallback way for those who are unsure of how your regular navigation works to be able to see a list of all your pages so as to find out whether your site contains a page on what they want at all.
A web page with links to all the pages of your site also serves to provide the search engines with a more direct way to locate all the pages of your site without having to pass through too many pages in order to navigate your entire site. With an HTML sitemap on your site both visitors and search engines can get from any page on your site to any other page of your site by followiing at most two links (unless your site has so many pages that you need to break up the sitemap into multiple pages). From whatever page they reach first they can follow the sitemap link to get to the sitemap page, find the link to the page they are looking for there and then follow that link to their final destination.
Having a sitemap web page on your site means that it is usable both by the search engines and also by real people visiting your site. Most of your visitors will probably prefer to use on of the other methods that you provide for navigating between the pages of your site but having the sitemap available provides your visitors with an additional way of being able to find what they want and improves the chances that they will find it. The only time I wouldn't bother with adding a sitemap of this type to a web site is where the site has few enough pages thatt all the pages can be listed in the regular navigation options on each page anyway.
There is a second type of sitemap that Google introduced a while back and which other search engines now also support. This second type of sitemap is an XML file intended specifically to provide information about your site to the search engines. As an XML file it isn't going to be seen by most (if any) of the real people visiting your site and will only ever be seen by search engines. You therefore have no benefit to your real visitors in providing this sort of sitemap on your site.
So why would you provide an XML sitemap instead of an HTML one? Well I would suggest that it isn't something tat you provide instead of the HTML sitemap but rather something that you might use in addition to the HTML sitemap. If your site is big enough to need an XML sitemap then it is definitely big enough to need an HTML one as well.
So why provide an XML sitemap when you already have an HTML one? Well for one thing it can't possibly hurt anything and it may help in getting more of the pages in your site listed in the search engines. An XML sitemap also provides more information to the search engines about thepages in an easy to read format that saves the search engines from having to work it out for themselves. There are two pieces of information about each web page that an XML sitemap provides which make the inclusion of an XML sitemap useful. The first of these is something that the search engines may be able to work out for themselves but which by just telling them you ensure that they know about it straight away and that is just exactly when each of the pages on your site was last updated. If the search engines know which pages have changed since they last scanned your site then they know what to give priority to in scanning again. The second piece of information is the relative importance of the web pages. You can tell the search engines which pages of your site are more important to be listed and which are less important in the hope that the search engines will believe you and make sure that all your most important pages are listed even if they haven't listed the less important ones.
So how do you create an XML sitemap and keep it up to date with the changes you make to your site. Well there are a number of services around where you can pay someone to do it for you. A second alternative and one that isn't suited to any site that is big enough to actually need an XML sitemap would be to create and maintain the file manually (after all XML is just plain text). The third alternative is to use a script to generate the XML sitemap for you. Here you have two options - you can either use a script that someone has provided via their site (where you may have to pay to use it if your site contains more than a few pages) or you can install a sitemap script onto your own site and use that.
The last of these options involves a bit more work on your part at the start but is the cheapest and easiest option once you get the sitemap generator script set up. If you don't want the difficulty of installing it yourself you may even be able to pay someone to set it up for you which would at least result in your being charged once in order to have a sitemap generator script set up that you can run as often as necessary which is still much cheaper than paying each time you need it run.