Im Grunde ist die Unterscheidung einfach:
Alles was du ohne eigene direkte
API-Aufrufe (also auch ohne die in entsprechenden mit Lazarus gelieferten Units) hinbekommst, haben eine Chance auch auf anderen Systemen zu funktionieren.
Leider findest du an einigen Stellen im Lazarus Code aber auch diverse Funktionen, die theoretisch mit internen Funktionen abgedeckt sind, die aber praktisch nur unter Windows funktionieren. Einfach weil es die entsprechenden Möglichkeiten unter anderen Betriebssystemen nicht gibt.
Für konkrete Fälle bleibt daher nur zu testen bzw. in den Funktionsaufrufen in den Quelltexten von Lazarus nachzuschauen...