The contract between the Player's Union (NFLPA) and the NFL is called the collective bargaining agreement (CBA) and it is central to the amount of pay that players can get and how long their contracts run. This contract has been developed into three separate tiers in order to deal with trading.
After the NFL draft, if a player is drafted, he is only able to negotiate with the team that drafted him. The player's only other option is to not play for a season. That being said, if terms cannot be met, it is in the team's best interest to orchestrate a trade with another team that will keep them from losing out entirely. This is the first level of trading.
Restricted Free Agents
Once players have had three full seasons in the league, they are considered "Restricted Free Agents" and they have limited rights to negotiate with any team. At certain salary points, the team the player is with has "right of first refusal" before the player may go to another club. When the numbers reach a certain point, making it impossible for the current team to match, they still retain right of first refusal but might also get a higher draft pick for the following year if they let the player go. If the salary climbs to astronomical heights, the former club could end up with a first-round draft pick along with right of first refusal.
After four years, a player is a free agent and may, at any time when not held within a contract, negotiate with other teams. In 2010, this time limit was moved to six years. In order to hold on to team-making players, there is a "franchise tag" that can be claimed by the team. At that time, the team guarantees the player a contract that is the average of the five highest-paid players of the same position in the entire league or 120 percent of the player's previous year's salary, whichever is greater. This locks the player into that team for one more year.
Trading between Teams
As far as trades amongst teams, when a player is under contract, the team to which they are contracted is an at-will employer, which means that they have the option to trade the player with any other franchise at any time unless the player has enough power to put stipulations in their personal contract. Trading has become a way of not only helping to secure subsequent team success by upping position in draft picks, but also of dealing with player, owner, coach or manager troubles.
Players can be traded freely amongst teams for draft picks, other players or groups of other players. Even free agents tend to sign contracts in order to secure their pay rate, so they are often able to be traded. These players are less desirable as they tend to be older and often do not have more than a year or so left on their contracts. Therefore, the receiving team has no way of guaranteeing that they will stay around even after they have given up some of their players or picks in the trade.