What is the difference between exactness and optimality of an algorithm?
Every NP-complete problem can be solved in exponential time. Assuming that P differs from NP, it cannot be solved in polynomial time. It follows that the branch-and-bound algorithm probably doesn't run in polynomial time (in the worst case).

To give a concrete example, consider the problem of MAX-CLIQUE: given a graph, the task is to find a clique of maximum size. The decision version of this problem (given a graph and a number $k$, decide whether the maximum clique has size at least $k$) is NP-complete. This means that (unless P equals NP), no polynomial time algorithm can solve MAX-CLIQUE exactly on all inputs. However, there is a simple exponential time algorithm that does solve MAX-CLIQUE exactly: it just tries all potential cliques and checks which of them are present in the graph.

Finally, you mention that if a problem is NP-complete then the reason might be that there is no optimal solution. This is just wrong, and I suggest ignoring the source which led you to believe this statement.