Emphasis will be on devices such as the UART on the Pi in the Ultibo OS-less LazFPC
You might be looking at 2 things that you need.
Object orientation and/or event-based programming. They sometimes go hand in hand, but that is coincidence.
If you are going to use 3rd party code (e.g. a framework) and that happens to be OO style, then you need a small amount of OO knowlegde to use it, but not too much.
At least in all probability.
You may only need to write a basic class of your own, if you need a method (on classes) for events (see below).
You might (I can not say for sure) not need to pay to much attention to inheritance and virtual/overridden methods (though it could be useful on its own).
You are dealing with async communication (UART) => that means you likely deal with event driven code.
You may find that in many an OO tutorial, but if that is what you need, go straight to learning that.
Event means you will deal with "type TFoo = procedure {of object}". The types may be given by the framework. Codetool can create the procedure fore you
https://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools#Event_Assignment_Completion => but if it requires a method (on a class) then you need to be in a method already.
And then obviously event based is a different kind of thinking. You will not do "while waiting". You will exit your code, and later continue in the event. That means local vars will be gone. You need other storage. That is when an object comes in handy, it can carry the variables.
This may sound all a bit much, and certainly highly compressed. But it is not an introduction, rather just some hint what you may want to pay attention for when looking for tutorials.