I see both terms used, local check and plugin, and to me it seems that they both accomplish the same thing, they extend Nagios to perform other checks. Is there any difference between them? If I want to implement a custom check should I write a plugin or a local check?
A local check is done by a plugin. A remote check is also done by a plugin, mostly over NRPE. Here http://sites.box293.com/nagios/guides/nrpe/installing-nrpe-client-agent/unix-linux can you find some documentation about how to install and use NRPE agents on both Linux and Windows. if you want to implement a custom check, you need to write a plugin, that you can use locally by just executing the plugin or remotely by executing it over NRPE from the Nagios server with check_nrpe.