Performance counters, as a concept, are measurable, reportable metrics that the kernel, or an application, can report to the operating system. Thinks like CPU load, memory usage, network bandwidth, etc are examples of performance counters. It's not just hardware-based; a webserver can report how many sessions it's handling, or a DB server can report the number of connections and queries/sec. In Windows at least, you can create your own for your application; if you have a server application that processes input files into a database, you could have it report its throughput in files/sec or KB/sec. You can report server uptime in consecutive hours or as a percentage of the time since it was installed.
How you go about accessing or creating performance counters will vary pretty widely depending on your development environment (language, framework, libraries) and target OS, but I can't think of a modern kernel that can't at least report hardware performance numbers.