Flash is optional and should only be used when absolutely necessary, for some that is never. Its not mobile friendly, its insecure, and Apple products don't work with flash.

For websites HTML and CSS are necessary as that is what makes up your web pages.

For CSS I like Compass/SASS, helps keep things cleaner and variable driven css can help collapse changes that would have been scattered through files.

For HTML, get to know the tags and build from there.

HTML5 is increasingly important. And because websites get served on phones, tablets, and PCs, you'll eventually want to do responsive design.

Since you want to learn how to make websites: get VirtualBox and create a VM, set it up as a host for locally hosted (within the virtual machine) websites. Clone it and you now have a place to practice making websites. Play more with wordpress, etc. A lot of the websites out there are run by CMSs like the one you are using. With these, the amount you need to know depends on what you are trying to accomplish.

The VM and setting it up to locally host websites may seem like a lot of work, but being able to do that will give you the most flexibility and allow you to learn building websites. You will need to deploy to a server at some point, so its get to learn this stuff too.

SASS allows for nested rules, variables, inheritance and such in CSS. Its a super-set of CSS and uses the .scss extension. http://sass-lang.com

Compass leverages SASS and provides an authoring framework. It will watch your sass directory for changes in the .scss files. When there is a change, it regenerates the CSS files, which are in the CSS directory.

This let's you keep your working css files separate, generating cleaner css files for the website/application. Since Compass is always watching for changes, you don't have to worry about the synchronization of changes.

HTML5 is just the latest version of HTML. It adds a lot of stuff and helps enable more powerful web apps among other things. Google it :)

He is making things extremely complicated for a newbie. Just grab a program like Notepad++ (much better than regular Notepad because it color codes the tags) and start playing around. This website helped me get started. You won't be making masterpieces at the beginning. Heck, don't even go for design at the beginning, go about learning the tags.

It's a text editor with built in syntax highlighting and auto-completion for a lot of languages. It's nice on the eyes and has a lot of built in themes (I recommend solarized) and I just great to use in general.

Inded, I realized that it may be a bit complicated for a noob and that I left out a piece, that probably makes a bit more complicated. I was also basing my response based on the assumption that the OP would be using a windows computer. That may not be a valid assumption, but I'll run with it. For a non-windows user, its a lot easier.

I quick thing about Compass/SASS, it really doesn't add complexity, you just have to modify .scss files and leave your .css directory alone. Once you do that, its a lot simpler. You can use variables, which simplifies a lot in your css, and there's so much more.

But back to my 'over-complication'. I'm assuming that the OP will end up wanting to do more than imbedded css and <h1> </h1> <a> </a> etc stuff. I am also taking this from the perspective of the person may want to have a website that they can actually do something with, instead of just putting up a series of static pages.

Using the OP as the basis, I'm suggesting that learning by learning with Wordpress, or another CMS might be useful. One can create a virtual lamp stack with Wordpress with minimal knowledge.

And I forgot 1 piece, a programming language, like PHP or Python, etc.

I'll back-up.

First install firebug on firefox.

Then, for learning the absolute basics start with http://www.w3schools.com. Start with the HTML and CSS stuff. You can google for other ways to learn if you don't like that site's.

Quick overview of the major pieces of CMS, like Wordpress:

HTML and CSS: they are used to create what you see on the web page. If you view page source you can see the html. Firebug will allow you to view the css that is used to define the style of that object. The Compass/SASS stuff doesn't really apply here, but if Wordpress has a theme that supports it you might want to learn it after you get familiar with CSS - sorry for leading you down that tangent.

Database: Usually MySQL. This is where the contents and the settings of the website is stored.

Apache: This is the web server. Web servers take requests and then serves the result of those requests. So when you click on something on a web page, that request goes to a web server. That web server is like a doorman, it looks at the request and says yes that site is here and then calls the site to fulfill the request, or says sorry no, the site doesn't exist here. The web server then takes the results of the request and sends it back to the requester, your browser in this case.

PHP: PHP is a programming language and is the language used by Wordpress.

JQuery and Javascript: At this point its really not necessary for you to know these two. just to know that they exist. They add functionality to the web site. They help bring the website to life, or they help advertisers present ads to you.

Hopefully the above isn't too complicated. Just start with HTML and CSS and build from there. How much you need to know of any of the above depends on what interests you and what you decide to do.

Well if you want to be able to see what you are trying with CSS and HTML then you can set everything up locally or get a free micro instance from Amazon, http://aws.amazon.com/ to try it on your own server instance.

That way you can just do your learning on your computer and view it in the browser via localhost or some domain you redirect to localhost via the hosts file. It won't cost you anything and it should be faster than working remotely.

As some people said before me, Flash is only to be used when absolutely necessary. The only cases when I would say Flash is absolutely necessary is when you're developing an application such as a game or a diagramming tool, basically anything that relies heavily on graphics. And even in those cases, with HTML5 this might not even be necessary.

The pro's of HTML is that it is easier, looks better, works faster, and it has universal browser support. Another thing is that for HTML you do not need to purchase anything, unlike flash where you need to purchase the adobe suite.

When I started web development, I started doing the tutorials offered in http://www.w3schools.com. Although the tutorials they teach you are quite basic, they are enough for you to get started with website tutorials.

Additional to learning HTML and CSS you might want to learn JavaScript and a server side language, such as PHP. This is a rough intro into what each of these do:

HTML is the place holder for your webpage's information, it defines the webpage's structure, where the title is, where certain information is, etc. The way you define the structure of your web page is totally up to you, you might want to have a specific section for personal info, for example, and then a specific section for your blog. This is all defined in the HTML code.

CSS is the language that will let you define how the information from your HTML structure looks like. Maybe you want your personal info section to look green, have a red background, and be of a certain height. This is what you'd define in CSS.

Javascript is the language that lets you define how the data you put in your webpage behaves. Maybe you want to put a button that when clicked, hides your personal info so your users don't have to see it all the time. This is defined through Javascript.

Finally, a server side language is a language that runs specifically on the webserver, that is, the computer that hosts all your HTML files. A server side language will let you create dynamic web pages. A dynamic web page is like facebook for example. You could consider a facebook page to be the same HTML page, except that it gets populated with different info everytime. This is the type of work a server side language does. Although it is not limited to this. There are tons of languages that can be server side languages, PHP is one of the most popular one.

Other things you might want to consider looking into are AJAX, XML, JSON, jQuery, and Databases (MySQL for example).

Html is the basic communication method between webservers and browsers. To get your hands dirty with basic html, build a local .html file, edit it in Notepad++ and practice stuff like hyperlinking, aligning elements with divs and embedding images.

CSS makes the design process of writing html more extensible and object oriented. Rather than coding 'this div should be blue with a white border' you say things like 'divs should be blue with a white border by default' or 'div 'mydiv' should be blue with white border by default.

Once you've written the html for a page with a great many similar elements, moving to CSS driven solutions will be natural. Alternatively you can practice modifying your wordpress skins, but that approach is more CSS 'hacks' than CSS design.

Flash is framework that you can embed into a website with a few lines of html. You'll need to work on that with an IDE. It's suitable for things like advanced animations, interactivity and other advanced webdesign methods that are hard or impossible to do with other front end technologies such as javascript.

That said, flash is on its way out and HTML5 is on its way in, so now is not necessarily a good time to learn flash from scratch.

HTML5 refers to the latest set of technologies such as easy video embedding and certain interactive elements available to the most modern browsers. It's basically more advanced functions in HTML.

There is nothing (that I know) you can do with CSS that you cannot technically do with HTML alone. However using CSS allows you to get a lot more done via reusability, extensibility, consistency and configurability so will always be used to power any more than the most basic of sites. As I said, you can use it to configure a CMS, or configure a flat HTML website, but you'll have to get started with either of those first.

There's a high degree of preference on how to code a site based on complex balances of extensibility, maintainability, readability and so on. You only start to explore these secondary attributes after you get coding a bit though, as the HTML spec is very loose compared to most languages.