I want to add that there will be a minimum salary of 1 million per season for any player.
So, if you sign a rookie for 1 million, the furthest you could extend him once he loses rookie status would be one year because your initial bid was one million. Therefore, if you felt that your rookie pick is going to be worth a four year extension, you must initially sign him for four million.
If you sign a veteran, you must always keep in mind that the minimum salary is one million as well, so if you sign a veteran for one million, the most you can keep him for would be one year (the current year). If you want to keep him longer, you should pay accordingly. For example, if you wanted to keep him for three years, then you should sign him for three million.
The advantage of paying more is that you can free up cap space by waiving the player and paying half the salary. One year deals are always paid in full.
Once you have stated that you want to pay a player for the current season, there is no discount for waiving him. Salaries are paid in full at the beginning of each season. You can only waive players and free up half of their salary in the off season.