All U.S. currency and coins are legal tender today, according to 31 U.S.C. Section 5103. This was not true in the past -- until the 1870s, pennies were legal tender only up to debts of $0.10, and all other coins up to $10.00. The Coinage Act of 1965 made all U.S. coins legal tender for all debts, public and private.
Just because they are legal tender does not mean that a private citizen or entity is required to accept them; it DOES mean that the Federal Reserve is required to accept them.
A person or business is free to say he/it will not accept bills over $20, or that he/it will only accept nickels, or that he/it will only accept debit cards and not cash, ad nauseum.
The U.S. Treasury's take on this can be found at http://www.ustreas.gov/education/faq/currency/legal-tender.html#q1. There are also Federal appellate court cases on this point; I used them when teaching legal research and writing at a law school.
As to whether States can pass laws regarding the acceptance of Federal currency and coins, my guess (not researched, but pretty darn certain) is that a State law that purported to limit the use of federal coins and currency as legal tender would be unconstitutional.
Last fall, a former co-worker (a paralegal who thought she knew all law better than any attorney) attempted to pay a debt owed to her ex-husband in pennies. He refused them, she refused to tender any other payment, and she was found in contempt. True, the actions of a State District Court judge doesn't set Federal law, but it's the only time I've actually run into this issue in life -- other than using it as a topic for teaching in law school.
Good Info, Thanks