Examine the differences between utilizing pointers and standard library functions for string manipulation in C. Evaluate their efficiency, error susceptibility, performance, code readability, and potential vulnerabilities, presenting the pros and cons of each approach with specific examples. Additionally, suggest best practices for effective handling of strings in C.