Como volta e meia vejo alguém penando na comunidade brasileira de Drupal para descobrir como criar um módulo para o Drupal, fui pesquisar no Google e não é que não achei nada objetivo na primera página de resultados mesmo? Vamos resolver de uma vez.
Atenção: vou simplificar algumas coisas para tornar mais fácil de explicar o básico. Após aprender o básico, você poderá alterar certas partes, mas enquanto você não dominar o Drupal, pode seguir da forma que estiver aqui, que funcionará. Se você tiver dúvida sobre aonde que pode mexer, provavelmente é porque ainda não domina o Drupal, então pode seguir as "regras daqui" numa boa ;)
Atenção 2: quando for necessário fazer algo diferente para o Drupal 6 ou 7, irei avisar
1 - O que é um módulo de Drupal?
R: uma pasta com alguns arquivos dentro, que precisa ficar dentro de "sites/all/modules". O exemplo que irei usar, o módulo "meuprimeiromodulo", deverá ficar em "sites/all/modules/meuprimeiromodulo"
2 - O que é necessário para um módulo funcionar?
R: dentro dessa pasta é necessário ter 2 arquivos(lembre que estou usando o nome "meuprimeiromodulo" como exemplo): "meuprimeiromodulo.module" e "meuprimeiromodulo.info". O arquivo ".info" tem as instruções sobre o módulo para o Drupal conhecê-lo. Basicamente, você terá algumas informações que servirão para você vê-lo na página de listagem de módulos. O arquivo ".module" é o que terá os códigos customizados que você irá criar. Vamos começar então.
Crie(dentro da pasta, obviamente) o arquivo "meuprimeiromodulo.info", com o seguinte conteúdo:
name = Meu Primeiro Módulo description = Meu primeiro módulo core = 6.x version = 6.x-1.0
Veja na imagem como ficam o arquivo e a lista de módulos(o screenshot é do Drupal 6, mas no 7 fica igual):

Crie o arquivo "meuprimeiromodulo.module", com o seguinte conteúdo:
<?php
/**
* Esse é o hook_menu() - Saiba mais em http://api.drupal.org/hook_menu
*/
function meuprimeiromodulo_menu() {
$item['minha-pagina'] = array(
'title' => 'Essa é a minha página',
'page callback' => 'meuprimeiromodulo_pagina_para_dar_oi',
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM
);
return $item;
}
function meuprimeiromodulo_pagina_para_dar_oi() {
$html = "Essa é a minha página";
return $html;
}
?>


