I would like to make middle tier and learn how to do it, how to communicate between front-end and middle tier and how to communicate between middle tier and DB...
In the case of tiOPF, data persistence (reading/writing data) is done via a persistence layer. Moving from a Client/Server application to a 3-tier application with tiOPF, is simply a case of switching the persistence layer to Remote Persistence. Nothing else needs to change in your application. The joys of a well designed framework. :-)
tiOPF's remote persistence (3-tier) works using a generic Application Server application, supplied by tiOPF. It works out of the box with everything you need, but you can obvious customise it too. The application server is implemented using Indy 10's HTTP Server component. It obviously talks to the database using whatever persistence layer you enabled there (IBX, SqlDB, Zeos etc). Your client application will use the Remote persistence layer, and you give it the IP address or domain name of the Application Server. The Remote Persistence layer uses Indy 10's HTTP Client component. It will also stream, compress and encrypt data to/from the Application Server.
The nice thing of 3-tier with tiOPF is that there is no additional licensing costs (eg: Oracle will most likely charge per connection to the database). In tiOPF's case, there is only one database connection from the Application Server, and nothing from the client software. Also the Client software doesn't need any extra database libraries installed, as it uses TCP/IP to communicate with the Application Server, and all OSes come standard with TCP/IP support.
In a nut shell, the 3-tier layout looks as follows:
database_server <---> Application server <-------------[ WAN or LAN]---------------> Client application(s)
So, I am asking for your advice where to start. As I have long time experience with client-server (two tier, Delphi way) applications, but not with middle tier, should I start by reading tiOPF documentation, or should I learn more before it?
As I mentioned, if you get a working client/server application going with tiOPF, there is nothing new to learn if you want to switch to 3-tier. Simple change the persistence layer (normally a Compiler Define in project settings) and recompile. Done!
To get started, get the latest tiOPF code from the repository, switch to the
tiopf2 branch, which is the branch that supports FPC and Delphi (up to D2007 I think). Reading some documentation would be good, but I know how much developers love to read documentation.

The "concepts manual" is good though. I do suggest you work through the demos though. Each demo was designed to be simple and concerntate on only showing one feature. That makes it easier to learn and understand. Demo 18 is a complete example of Client/Server and 3-tier. It has an application server implemented as a GUI app (useful for debuging) and a Windows Service. It also has various Client applications (GUI, console, web).
Other than that, search the
tiopf.support newsgroup, and ask any further questions there.
The following URL shows some more FPC+Lazarus specific instructions.
http://wiki.freepascal.org/tiOPF