Как в laravel построить сложную логику?
Бизнес-логике - не место в контроллере.

AppServiceProvider
public function boot(){
Validator::extend('count_books', function($attribute, $value, $parameters) {
        $count = IssueBook::where('client_id', $value)->where('is_returned', false)->count()
        return $count < 2;
});
}

StoreRequest
public function rules()
  {
    return [
      'category_id' => 'exists:App\Category,id',
      'client_id' => 'exists:App\Client,id|count_books',
      'book_id' => 'exists:App\Book,id',
      'days_issued' => 'nullable|string',
      'is_returned' => 'nullable|boolean',
      'return_date' => 'nullable|date',
    ];
  }
Данная проверка никакого отношения к валидации полей формы не имеет. Смотри авторизацию с возвратом сообщений.