Is there anyway to set permissions on an item depending on a column value? I was think about creating a feature to do this but do I have to?
No, you will need a custom solution for this! For example an asynchronous list item event handler. But be careful with item level permissions - you should not exceed 1000 unqiue security boundaries in a single list. See Software boundaries and limits for SharePoint 2010.
if you are not a developer and cannot develop an event receiver, try to use this - http://www.infowisesolutions.com/product.aspx?id=SmartActionPro it can update the permissions of a list item according to column value, exactly as you need.
though, there is a limitation for lists with a large amount of items with specific permissions, so you would have to consider that before you are trying to find a way to apply the permissions.
Actually, there is a way to do this without code, but you need this addon from codeplex.
First, you can create a view and filter the view based on the value of a column. So, for instance, if you create a column called "permissions" and set the value to 1, then you can create a view that filters on that column value.
Now that you have the right view created, you can use the addon I mentioned to show or hide that view based on which usergroup a person belongs to. It's a wonderful addon - I wonder why Microsoft never included this functionality in the first place.