First of all you've clearly done zero research yourself on this and that's something we expect all serverfault users to do - so bear that in mind please, 'must try harder' :)
EC2 is one of the compute aspects of AWS - it's the virtualised CPU and memory aspect, but importantly it's not where the disk images are stored.
EBS is block-level storage that very often contains the disk images that EC2 VMs ('Instances' in AWS-speak), it's just that though, block storage - that's be default dedicated to act as a disk for one single VM. There are various types to choose from based on your performance and budget needs. Also of note - EBS 'disks' are a set-size, if you want 20GB then that's what you get and what you pay for, regardless of how much data is actually stored in the disk image.
S3 is an object/file store only, as far as I know there's no current way to boot directly from a disk image stored there (that may change though), but it is essentially limitless, you only pay for what you store, and also it can be very easily setup to share any given file over the internet, usually via a http/s request. Its performance isn't as good as EBS but it's pretty good for web-based loads. That said it's not where you want to put a file to share out to thousands of people at the same time, you'd need a CDN like CloudFront or Akamai for that.
If you need internet access to your files, with comparatively-low numbers of concurrent users then S3 may very well be for you - it's pretty cheap, very flexible and kind of an industry-standard.
Either way do more research dude :)