Retrieval of an arbitrary item from a linked list is O(n). Arbitrary means any of the elements are eligible for selection, without loss of generality.
However, retrieval of a specific item from a linked list has nothing to do with how many items are in the list. It is therefore O(1). Retrieving the 50th item from a linked list takes the same amount of time, no matter whether the list has 50 elements, 50M elements, or 50^50! elements.
We can prove this claim, by proving two lemmas:
The first claim is straightforward, and we can use our intuitive understanding of O-notation. It takes k-steps to jump through k elements in a linked list, so not having any more information (like how the linked list is stored or elements cached), we can conclude that the worst-case runtime will be no better than O(k). You can also verify this with the formal definition (below), but that's left as an exercise for the reader ;)
Now, for the second claim, let's go to the definition. The wikipedia page ( http://en.wikipedia.org/wiki/Big_O_notation ) is fairly dense, so I much prefer the definition in "Introduction to Algorithms" by Cormen, Leiserson, and Rivest (my version is from 1998, so no Stein):
In our problem, g(n) = 1 and f(n) = k
So to prove that O(k) is a proper subset of O(1), we need only find the positive constants c and n0 that satisfy this formula. Well, we can use whatever we want for n0, since n doesn't appear in either of our equations. Let's use 1 to simplify things. Now for choosing c, we can use any number greater than or equal to k, so how about k? Now we have:
∀n > 1, 0 ≤ k ≤ k * 1
⇒ f(n) ∈ O(g(n))
∴ O(k) = O(1)