This book gives a good introduction to general security concepts.
it starts off with some common programming exploits (eg buffer overflows) and explains how they work and shows you how to execute them. This section of the book is good, although i found the need for other material to expand on what i learned here. For example aleph1's excellent tutorial Smash the Stack is a good way to supplement this. Other programming exploits explained are heap overflows, format strings and returning into libc. These are all well explained introductions, but to gain a deeper understanding it is necessary to do some more research.
There is also a good section on writing your own shellcode. Some assembly language experience is useful here and generally it is well explained and set out.
The section on network attacks is also a very good although at times it seems like he is only explaining how to use existing tools and doesn't go into the theory behind them enough, but having said that it is an excellent introduction. Topics covered here include: packet sniffing, DOS attacks, port scanning and TCP/IP hijacking.
The final section on encryption offers some good theoretical knowledge on general encryption concepts but lacks a little on the practical implications of this. However if you are really into encryption you will want to get a dedicated book on it. In the meantime this definatly severs as a good introduction.
With the nature of the topics covered the best way i found to learn was to read over a section and experiment with it. You can only learn so much from a book, but this book will give you a good knowledge base to start from. A decent knowledge of C is assumed, some assembly knowledge would be helpful but isn't strictly necessary.