The place to start is the Selenium IDE. This is a Firefox plugin that allows you to capture a sequence of interactions using the Firefox browser. Once you stop recording, you then store the recorded steps as a test case.
The Selenium IDE allows you to play back the test case that you recorded earlier. You will get a sequence of steps replaying in the log This will introduce you to some concepts of timing and state. You will find that you have to edit the Selenium test case to insert delays and wait for certain kinds of properties of the pages under test. For instance, when you click a button, you will need to wait for the new page to load and check that it loaded.
You will note that the Selenium IDE "programming language" is very limited, composed of just a series of command verbs and testing predicates. There is no looping, or any real conditionals. However, you can create some very useful tests with just this set of tools.
Selenium IDE allows you to organize your test cases into a test suite. This is a sequence of cases, each stored in its own file, that is referenced from the test suite file. You can then run the test suite file from the Selenium IDE.
With these steps mastered, you will have learned a number of important things about using Selenium: how to write tests that are repeatable, reliable and maintainable.
The next step is to use a plugin within Selenium IDE that will generate Java (or Ruby or Python or C#) code to invoke Selenium in several different test drivers. The resultant code can then be compiled and run under JUnit or TestNG and give you the same results as you got running under the Selenium plugin.
Now you have a base of working code that you can start to learn to modify, to add loops and conditionals and to begin the process of engineering your testing code to meet your other requirements. You can refactor parts into page testing patterns, link together tests, make your tests more sophisticated, all based on working, good code.