An abstract decision problem, such as clique, is an assignment of a truth value (b>true or false) for each instance of the problem. In the case of clique, each instance is a pair $(G,k)$, where $G$ is a graph and $k$ is a natural number, and the problem assigns true to a pair $(G,k)$ if $G$ contains a clique of size $k$; otherwise it assigns false to the pair.
An algorithm for an abstract decision problem is an algorithm which takes an instance and returns its correct truth value. So an algorithm $A$ for clique takes as input a graph $G$ and an integer $k$, and returns whether $G$ contains a clique of size $k$. An algorithm should work for all instances at once, and we are interested in the resources it consumes (time and memory) in terms of the length of the input.
For example, let us consider the following algorithm for clique: given $(G,k)$, go over all sets of vertices of $G$ of size $k$, and for each one, check whether it constitutes a clique. One can check that the running time of this algorithm isn't polynomial in the length of the input.
We are interested in algorithms that work for all instances. For any given instance $(G,k)$, we can construct an algorithm that works correctly on it (one of the following algorithms will do: the algorithm that always outputs true, and the one that always outputs false). So it's not meaningful to look at single instances. If we have a particular algorithm in mind, then this algorithm might work better on some instances, and in that sense we can say that an instance is easy for a particular algorithm.
NP-completeness theory deals with worst-case time complexity - we're interested only in algorithms that work for all instances. The area of average-case complexity deals with algorithms that only have to work on almost all instances (in some precise sense), the idea being that such an algorithm is very likely to work on every instance encountered in practice.