タブの実装方法は複数あり、各々がどういう位置づけかよくわからなかったのでまとめました。
コードは載せていなので、各自調べていただければと思います。
※第三者が提供しているライブラリは除きます。
#ActionBar
この方法API21の時に非推奨とされていますので、これから開発する方は使わないようにしましょう。
ただ、スワイプ+タブの実装方法のベストプラクティスとして、ActionBarを使った方法が紹介されているんですよね。。。
#TabLayout
Android 5.0の時にマテリアルデザインが発表されましたが、その際にマテリアルデザインに則った開発ができるようGoogleからデザインサポートライブラリというものが提供されました。デザインサポートライブラリはAndroid 2.1以上をカバーできます。
TabLayoutはデザインサポートライブラリに含まれているものであり、マテリアルデザインに則った開発をするならばTabLayoutを使うべきです。
#ActivityTab
現在は非推奨となっているので、ActivityTabを使うならば後継のFragmentTabHostを使いましょう。
#FragmentTabHost
タブをフラグメントとして扱います。よって、例えばタブ上にアイコンを表示させたいときは、アイコンを表示するViewを作成し、それをFragmentTab上にセットします。
前述のTabLayoutと比較して、FargmentTabHostはタブというよりはフラグメントを扱っている感じです。(その分FragmentTabHostは柔軟なタブ表示ができます。)
どのようなタブデザインにするのかによってはFragmentTabHostを選択するのもありだと思いますが、マテリアルデザインに則ったデザインを行う場合は、マテリアルデザイン用に作られたTabLayoutを使った方がよいのではないかと考えられます。
#PagerTabStrip
ViewPagerとセットで使う必要があります。
一番簡単に「タブ(文字表示のみ)+スワイプ」を持った画面の開発ができます。
ただ、同時に表示できるタブの個数が3つまでだったり、タブ上にアイコンを表示させる場合に一工夫が必要だったり、少し凝ったことをするとコーディング量が増えます。