At a high level, OpenStack is a collection of software which enables you to create and manage a cloud computing service similar to Amazon AWS or Rackspace Cloud.
So the customer of an OpenStack installation would interact with OpenStack to create new server Virtual Machines, book more storage space, restart or re-image servers, read and write files to storage, etc.
Regarding @Johan "I can [..] do that with a normal webserver and a database, and with some python/php". No, you cannot -- we're talking about fleets of servers, possibly thousands of servers, and some customers who only need a fraction of a single servers capacity, while other customers need hundreds of servers.
From the OpenStack Object Storage Administration Guide:
Currently OpenStack develops two related projects: OpenStack Compute, which offers computing power through virtual machine and network management, and OpenStack Object Storage which is software for redundant, scalable object storage capacity.
OpenStack doesn't do this on its own; you will obviously need lots of servers, a virtualization layer/hypervisor, storage servers, a well managed network, etc. OpenStack then manages this existing infrastructure in a more automated, programmatic way.
If you're looking for more information, then perhaps the Developer & Admin Guides are the best place to start. Their first page looks a bit unusual, but the Table of Contents is always on the far left.