Technically, where you store them is (almost) irrelevant. That is, if your website is just on your computer, they can be on your computer, but if your website is online, they should be on a server.
Creating a folder called 'images' is not necessary - but it's a useful organizational tool. You could have them in the same folder as your index.html and your other pages, but if your site is bigger, that might be quite a mess. Or you could have them in a folder called 'elephant' - as long as the path to the images is correct, it won't matter. Obviously, calling your images folder 'images' makes a lot more sense.
Let's assume you have a folder called 'website' and your index.html is in that folder. That folder also contains another folder called 'images' (which holds your images) - then your code to the image would look like this:
When you upload to a server, you'd upload your index.html AND your 'images' folder (including elephant.jpg) and your code will not change.
Does that help for starters?