In TLS, the server is required to have a private key and a certificate (sometimes known as a server cert). The server cert identifies and authenticates the server. The client may optionally have its own private key and certificate as well (usually called a client cert). If a client cert is used, it identifies and authenticates the client.
On the web, with HTTPS, usually the server has a server cert but client certs are not used. This means that the client can authenticate what server it is talking to, but the server cannot authenticate what client is connecting to it.
However, in many programmatic contexts, you will typically want both endpoints to authenticate each other. Therefore, you will want to use both server certs and client certs.
In TLS, all certificates are X.509 certificates. X.509 is just the format of the data.
Certificates include a public key and a signature from a certificate authority (CA). On the web, typically web sites have a server cert that is issued (signed) by Verisign or some other well-known CA. Web browsers come with a list of almost 100 different CAs, pre-installed, and most widely used web sites have a server cert that is issued by one of those CAs. For instance, Verisign is one of the CAs in every browser's standard list of CAs. Verisign charges you money, if you want them to issue you a cert.
The alternative to getting your cert signed by a standard CA is that you can use a self-signed cert: a cert that is issued, not by one of the standard CAs, but by yourself (or anyone you want). This isn't terribly widely used on the web, because self-signed server certs cause browsers to pop up warning dialog boxes to the user, which most websites try to avoid. However, for programmatic uses, self-signed certs may work fine. And if you use self-signed certs, you don't have to pay Verisign money. You can find tutorials on how to use OpenSSL's command-line tools to create your own self-signed certs.
SSL is a synonym for TLS. (Technically, SSL is the name that was used with several older versions of the standard, and TLS is a new name for several more recent version of the standards. However many people use the two terms interchangeably.)
I encourage you to read the Wikipedia article on public key certificate for more useful background.