Core and Contributed Modules

Core

Most of the standard functionality of Drupal is actually written as a module. There are several that are disabled by default, but which could come in really handy for many types of websites such as:

Contributed

Features (features)

The Features is strictly for developers. It allows you to convert database objects (views, content types, etc.) into a module. Because a module is a collection of files, it can be version controlled (say, in GIT). If you make an update to a featured object on your local instance, and then push it to a Dev server, the Dev server will recognize that a change has been made and you can then apply the update.

Devel (devel)

Gives you the ability to send debug messages to the screen. More information here...

Search Krumo

https://drupal.org/project/search_krumo

This is used in conjunction with Devel for debugging your pages.

Chaos Tools (ctools)

This is required by the Views module.

Views (views)

Just gotta have it, man.

Administration Views (admin_views)

Provides a better interface for system admins to look at content (.../admin/content) and people (.../admin/people).

Advanced Help (advanced_help)

The Views module uses, but does not require, this module. It allows you to store your help file in pure HTML files — awesome for custom modules.

Link (link)

A very popular module that provides a standard custom content type for hyperlinks. This became part of Core in Drupal 8.

Module Filter (module_filter)

For administrators, this allows you to group, filter, and find your modules quickly