I've heard about Selenium in several different contexts
http://docs.seleniumhq.org/ says Selenium automates browsers.
But exactly what role does 'Selenium' play in that?
As Michael Durrant pointed out, Selenium is a set of technologies.
The most used is the Selenium Webdriver - which is in the process to become a W3C standard. The Webdriver is a browser driver - a tool which can perform actions ('click in an element', 'input text in a field') and inspect the DOM ('retrieve the text from a element').
Selenium is completely agnostic (i.e., does not perform) on the following tasks:
For tests specifications, Cucumber is a tool that can fit in most projects - the work needed here are in hooks for test precondition setting and teardown. System modeling depends highly on your context - for web apps, tools like Site Prism and page-object can help, but this is where most software engineering work is implemented.
A bad smell in a automation project is when code for this 4 tasks (browser manipulation, assertions, test specification and system modeling) are intertwined.
Selenium is a set of technologies and implementations that allow you to automate browser interactions.
A key part is that the major manufacturers have provided an api that allow for automated interaction with the DOM of their browsers.
These interactions are then made available to tools and languages that can use them to build test cases in the language and testing framework of choice.
The most simple one is the Selenium IDE which is a firefox (only) plugin that allows you to write simple local automation running on your machine and using Firefox.
Beyond this the selenium API is provided to programming languages such as Python, C#, Java and Ruby through modules that are formatted appropriately for those languages, for example with Ruby this is the capybara gem which is combined with a test framework such as rspec or Test::Unit