Yes, Drupal can do that. Part of that functionality is already built into Drupal core, and you can extend that with contributed modules. Both core and contributed modules can be downloaded from www.drupal.org. Two popular contributed modules you'll want to learn more about are CCK and Views.
Drupal is designed to be flexible and extensible without having to modify the core files. Instead, you install modules. Modules extend Drupal using the concept of implementing hooks, which means that you write a function that will respond when Drupal invokes a hook. For instance, if your module implements hook_menu, your module will respond when Drupal core builds up the menu structure.
If you cannot find a module that does what you need, you can write your own, building on functionality provided by Drupal core and other modules. However, a lot of functionality is already available, so maybe you do not need to write any custom code at all.
I advise you to download Drupal, experiment with it on a local server and figure out which modules you need for your site. When you run into trouble, ask more specific questions here, or on one of the support channels listed on drupal.org.