The "missing library" message indicates that the container for the library
is still known, but the jar(s) that it points to no longer do. Best thing
to do would probably be to delete the containers marked "missing" and
create new ones.
Rather than using User Libraries for your JSF libraries, try using the JSF
Library feature (this is shown in the Register JSF Libraries portion of
the tutorial). Once you have created the JSF library containers, also
open Project->Properties...->J2EE Module Dependencies (it is called Java
EE Module Dependencies in a new builds) and ensure that they are checked
for deployment. Checking them in the Module Dependences will
automatically cause the jars to be copied to your WEB-INF/lib when you
launch the server.
The compile time (user libraries or JSF Libraries) has been intentionally
made separate from runtime (i.e. using J2EE Module Dependencies or
manually copying to WEB-INF/lib), since larger applications sometimes have
system libraries that are always present, so not every application needs
them at in the deployed war/ear but they are still needed at compile time
to get a build.