To prove that a problem is NP-complete you need to find the decision version of your optimization problem. The answer to the decision problem is yes/no.
Once you state the decision problem, you need to prove that your problem is NP. It means that, given a certificate (an optimal solution) you can verify the feasibility of the solution in polynomial time.
Then you need to prove the NP-hardness, which means that you must reduce an NP-hard problem to your problem. The reduction is in fact, converting every instance of that NP-hard problem, to an instance of your own problem in polynomial time so that, if there is a polynomial algorithm for your problem, it can decide that problem in polynomial time.
In this document, there is the np-completeness proof of bin packing: http://www2.informatik.hu-berlin.de/alcox/lehre/lvws1011/coalg/bin_packing.pdf
In famous text books you can find the np-completeness proof of: TSP, Hamiltonian path, longest path, set cover, vertex cover, clique and ....
In this document there are a number of good practices: http://www.cs.cornell.edu/courses/CS6820/2012sp/Handouts/111-137.pdf
Edit. For the relaxed bin packing, I should say that, sometimes you can relax/ignore some of the conditions in your problem. For example, in bin packing problem, one strict condition is that you should put each item into one bin and you cannot split one item into multiple bins. One may allow each item to be split into multiple bins (now this problem can be solved in polynomial time) which is called the relaxed version of the problem. Sometimes, relaxing one condition (such as integrality of solution) and rounding the obtained solution can give us approximation algorithms. I suggest you to search for relaxation in integer programming for more information.