Use a premade solution.
I don't think using FTP is such a good idea. It was specifically made for transfering files, but then again it's pretty much always a direct connection.
Using HTTP isn't that more complex, plus it allows you to use the network infrastructure to your advantage (e.g. proxies, caching, easy load-balancing etc.).
A basic auto-updater isn't that hard to write:
- Download a list of files and their sizes/dates/checksum.
- Compare that with your local files.
- Download anything that doesn't match.
The tricky part here is to update the updater itself, in case that's required. This is typically done with some small helper:
- Download the new updater and save it to a temporary file.
- Launch the helper and close the updater.
- The helper waits for the updater to close.
- The helper replaces the updater with the new version and starts it again
Potential problems pretty much always involve the current user's permissions/access rights. For example, you might require elevation to properly replace files or mark a file as executable.
Overall, I think it's something you shouldn't worry about just yet. Get some game running, then worry about the best possible update strategy. :)