A fish can be a curse or can mean simply a bad player, against whom play is profitable. Fish can be identified by their lack of strategy and by the moves they make with negative expected value. They play marginal hands and bet too much. It's also an insult, used interchangeably with those classics, retard, idiot, and moron.
The opposite of a fish is a shark, a player who robs fish of their money. Barracudas are those players in between, who still make money off the fish, but are good to mediocre players. Very aggressive players are called piranha. A table with a lot of bad players is called an aquarium.