An autoencoder is exactly what it sounds like: it automatically learns how to encode data. Typically, the goal for an autoencoder is to train it to automatically encode data in fewer dimensions, or to pick out certain details or other useful things in the data. It can also be used for removing noise from the data or compressing the data.
In general, an autoencoder has two parts; an encoder half and a decoder half. We tend to train these two parts in tandem, with the goal being to get the output of the decoder to be as close as possible to our inputs.