The problem you are encountering in your code is that
[pcolor] of patches in-cone 12 360
returns a list of the colors of all the patches in the cone and you cannot simply check to see if a list is equal to a single value. What you want to do is to see if every element of the list is equal to "red". There are several ways to do this, but I prefer to use reduce.
reduce [[k n] -> k AND n = red] (fput TRUE [pcolor] of patches in-cone 12 360)]
will give you true if all the elements of the list are red, and false otherwise.
Another approach is to count the number of non-red elements in the list by filtering out all the red values, leaving only the non-red ones, and then checking the length of the resulting list.
length filter [n -> n != red] [pcolor] of patches in-cone 12 360
will be zero if all the elements of the list are red, and non-zero otherwise.
Hope this helps,
Charles