Why is the iodide anion a good nucleophile but a poor base?
You should clarify whether the iodide anion is a good nucleophile in a polar protic or polar aprotic solvent. 

Also let's note that nucleophilicity is a kinetic property, while acidity/basicity are thermodynamic properties. Iodide ion's lack of basicity in water reflects its conjugate acid's ($\ce{HI}$) lack of stability; it's relatively easy to ionize its proton due to the weak hydrogen-iodide bond. 

On the other hand, the high nucleophilicity of iodide ion in water reflects the high rate of reaction between iodide ion and some electrophilic atom (other than hydrogen). 

The relative lack of basicity of the iodide anion in water is precisely what makes it a good nucleophile. Its lack of affinity toward protons - i.e. the protons of water - physically frees $\ce{I^-}$ to attack electrophilic atoms (not limited to carbon). There is little hydrogen bonding between iodide ion and water. 

On the other hand, the relative basicity and thus strong hydrogen-bond forming capabilities of $\ce{F^-}$ makes it a poorer nucleophile in water. Rates of reaction between fluoride anion and some electrophilic atom are slowed because the fluoride anion is trapped (strongly solvated) by water molecules. And there will also be a sizable number of fluoride anions that have completely abstracted a proton from water to make $\ce{HF}$, which isn't nucleophilic at all. 

In a polar aprotic solvent, however, where there are no positively polarized hydrogens for a nucleophile to hook onto; $\ce{F^-}$ becomes a much stronger nucleophile. Actually,  $\ce{F^-}$ becomes a better nucleophile than $\ce{I^-}$, likely due to $\ce{F^-}$'s greater charge density.