Библиотеки в с/с++ бывают двух видов - "header only" (то есть только заголовочные файлы, то есть .h) и библиотеки, которые нужно линковать.
Примером header only может быть библиотека, где определены константы и маленькие функции (вида min/max) прям в самом .h файле. Такие библиотеки нужно только подключать с помощью include - они уже все нужное содержат.
Второй тип содержит код, который был предварительно скомпилирован и упакован в специальную библиотеку (в линуксе/андроиде это .a файлы, в видновсе - .lib). И вот для подобных библиотек нужно линковщику указать, где искать реализацию функций и классов, так как в .h обычно определен только интерфейс. Если линковщик не знает, где взять реализацию, то он не может собрать результирующий бинарник.
unistd.h содержит в себе определение констант и заголовки к функциям, которые компилятор и линковщик знает где взять. Поэтому ничего подключать и не нужно. Все уже известно.
Может если я ее не пропишу туда, то будет лишня нагрузка на на систему.
Нет, не будет.
Вот почему эти 2 библиотеки отличаются (их оформлением), и какие вообще существуют статические библиотеки.
Выше я уже описал. Но библиотеки, которым нужна линковка, делятся на две категории - статической линковки (это .a которые) и динамической линковки (.so для линукса и .dll для винды). В случае статической линковки код "вставляется" в результирующий бинарник, в случае динамической линковки - нет, но нужны внешние файлы (те самые .so/.dll). Некоторые библиотеки могут быть в двух форматах, некоторые только в каком-то одном (я сходу так не придумаю явных причин, которые бы запрещали их делать сразу в двух форматах, обычно это зависит от разработчика библиотеки).
Где смотреть?
Тип библиотеки и как ее правильно подключить, обычно описывается в read.me файлах. Либо гуглится. Либо, используя седьмое чувство, подключается самостоятельно.