I don't have any formal education on computer so terminologies are new to me. I don't know what is back end and why it is needed
Backend in web developing usually refers to the programming that is doing data retrieval and insert/updates for a dynamic site. For example, it might be looking up products in a database to allow the user to buy. The "frontend" is just the HTML that displays these to the user.
Sometimes it can refer to development related to building code that runs the site (as previous answer said), AND to the area that is used to manage data (administrative part of web site).
Public-facing part of site is usually referred as frontend, along with code that exists for purpose of handling requests, rendering (x)html code, etc. So everything public-facing could be called frontend, and everything that is not, that is hidden from public and that runs "behind the curtains" so to say, can be called backend.
'Backend' and 'frontend' aren't really exact terms, so I'd guess that different people use them differently.
That being said, I think the following applies in general:
Backend is the code that does stuff (doing math, interacting with other web servers, a character's AI in a game, etc). This is different from the frontend which lets the user interact with the backend (ie: dealing with buttons and form fields, showing alerts, etc).
A quick google search brings up the following explanation: http://en.wikipedia.org/wiki/Front-end_and_back-end
Do note that the back-end is something different as the code-behind. In C# and VB (.NET languages) (don't know about other languages) you'll get a cs or vb file which is related to your aspx-page. Don't mix those up as you'll get confused.
It's worth saying (because nobody else did yet) that front-end refers to client-side executing code (javascript, css, markup, some other scripting technologies and things like flash) back-end usually refers to server-side executing code (C#, PHP, SQL, everything else...). Front-end is user (human) centric, back-end is data-centric.
The back-end contains (or at least should contain) the actual application logic. Thus in an ideal world you should be able to switch the front-end quite easily or even have many front-ends accessing the same back-end. As an example of this Twitter offers you the basic web site for normal users and an API that can be used by developers to build applications based on the data and services offered by Twitter.