Core records two 'Hour' fields with each time entry, Hours and Client Hours. Client Hours (billing hours) are billed to the client. By default, it takes up the same value as the Hours field. 'Hours' are actual hours worked by an employee on a task. It may be the hours you would base the payroll on.
Another way of writing up or down an individual time entry is to use Hours and Client Hours split. Suppose a new employee is working on a project and his work isn't up to your usual quality levels and expectations. While you want to give credit to the employee for his services, you do not want to bill them to the client.
You may set a time entry as billable/non-billable by checking/unchecking the Billable option, respectively. Alternatively, you can keep the Billable status of a time entry, but change the Client Hours and Amount to zero. The former practice is recommended. In both cases, the employee will still get paid for the work done (Hours) and the managers can keep track of job costing.
Regarding employee performance reports, the difference between the actual hours worked and billable hours does affect that. Obviously, this difference between the Hours and Client Hours will affect the profit shown for that employee. In the report, the cost reflects, say, 54 hours of work but the bill rate reflects, say, 51 hours instead of 54. Had those 3 hours been billed, the employee would be credited with a larger profit.