Fala Saulo, explicando bem por cima, você pode criar uma extensão como uma página web normal, com o html + css + javascript. O que faz ser identificada pelo browser e rodar como extensão é o manifesto manifest.json na raiz do projeto, indicando onde fica o html e script do popup, serviços que rodam em background, etc..

A MDN explica aqui como fazer sua primeira extensão.

Também tem um conteúdo legal no Chrome for Developers