"How to eat an elephant? One bite at a time." --- The scope of your question is so wide, that it is not possible to shows all subtle differences between different technologies you list. It would be more useful for you to focus on a single problem (e.g., interaction with Web browser) and then search for technology that helps you solve this problem. Therefore, I decided to center my answer around generic problems the listed technologies try to solve.
I posted my answer as community wiki, so others can improve it. Many of the technologies you listed I know only superficially, so I hope others will add more here.
Unit testing
Test framework enables execution of test cases automatically and reporting test results. Test framework usually provides a set of assertion predicates (e.g., isEqual) that will be used to compare actual system behavior with expected behavior (output) you define. Having tests cases with similar setup you may group them in test suites.
The family of frameworks for unit testing, i.e. testing of single components and functions, is known as xUnit. JUnit and NGUnit are implementations of such framework of Java language. phpUnit and SimpleTest would be for unit testing of PHP code pieces.
Interacting with external systems
During test execution, a test case implementation passes input data to the system under test and gets actual output data in return. Systems under tests cannot be called directly, when they expose different interfaces (e.g., SOAP). Hence, to speak to such a system, test case must use "glue", i.e., test driver that uses the protocol understood by the system. A test driver make easier for you to interact with such systems: prepare input data, parse output and make assertions on them.
- SOAPUI: Talking to Web services (exposing SOAP or RESTful interface), Web resources (HTTP interface), JMS queues, backend services for Flash/Flex applications (AMF interface).
- HTTPUnit, HTMLUnit: Interacting at low level with HTML Web sites and Web resources with HTTP interface
- Selenium WebDriver, Google WebDriver: Talking to Web browser (IE, FF, Chrome).
Integration and system testing
Some of those test drivers, like HTTPUnit and WebDrivers, can be used together with xUnit frameworks to automate completely testing process. Yes, xUnit frameworks were originally designed for unit testing, but currently are often used for launching integration and system tests.
Programming Languages
Groovy is a programming language for the Java VM. If you write APIs in Groovy, you might choose to test those APIs in Groovy too. You might also choose to test Java APIs in Groovy, but there are other JVM-based languages that you could use to test Java APIs as well.
To quote its Wikipedia page, "Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots) of the software under test" and "Sikuli Script is a visual scripting API using Jython to create automation scripts."
Selenese is a set of commands for writing Selenium tests in tabular form. You can read more about it in this StackOverflow post.