K-means and agglomerative hierarchical clustering are just two algorithms for developing clusters of records with "similar" profiles, at least when you have no dependent variable to use to define similarity (i.e. when you're doing "unsupervised partitioning"). Divisive hierarchical clustering, K-medians and cluster ensembles are examples of other ways of tackling the same problem. I typically use a variety of these methods when I'm creating segments because no one of them consistently outperforms the others (though I end up using the k-means, k-medians or cluster ensembles solutions the most often).
With large sample sizes k-means will run faster (so in that sense it's more efficient) but I really can't tell you that one of these is reliably more useful than all the others.