Sulle performance non lo so ma credo che siano le stesse perchè internamente execute userà immagino gli stessi meccanismi di bindValue solo trattando il dato come stringa e non distinguendo tra tipi e tipi. Sul "come trattare i dati del GET/POST" è sempre scritto nella documentazione che

Calling PDO:repare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information, and helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.
ovviamente puoi aiutare e aiutarti validando l'input del sistema prima di passare alle query. Questa risposta mi sembra poi molto interessante:

http://stackoverflow.com/questions/1...-sql-injection