A playbook contains tasks like installing, removing packages, editing config files etc. The beauty of it is that if done correctly you can run the same playbook over and over again against the same computer and each task can be smart enough to know if it needs to be run or not. This makes updating your computer with the same or updated playbook very fast.
With Ubuntu it's easy to get to the post-OS install, it's more involved with Arch Linux. I would first create an Arch box with Vagrant using Virtualbox. And then create a playbook that works with that virtual Arch box. If the box and ansible playbook is good enough then https://wiki.archlinux.org/index.php/Moving_an_existing_inst...
At least in theory, I haven't moved Arch between VM and a real host myself... Of course you can also just do a manual Arch install and then run the playbook but that would miss half the fun of doing less by doing more.
1) Get the right packages (eg: dpkg --get-selections > my-pacakges.list; dpkg --set-selections < my-packages.list). This part ansible can do fine -- but not really any better than your distributions package tool (for this particular use-case)
2) Set up your account (This can be done with kicstart, FAI or preseed.cfg) If you only have one user, this might not be worth automating. This is also a task ansible can handle fine.
3) Set up your preferences/restore your home folder etc.
This is the area that tends to take the most time and care.
Personally I've pretty much stabilized on a very spartan xmonad config (driven from ~/.xsession), and have a mercurial repo with various dot-files that I just clone and symlink to (and I have a bash-script that takes care of setting up the symlinks) -- I also manually set up a python virtualenv (which bin I add to my path), an ~/opt hierarchy managed by xstow (I usually recreate this, as the whole point is to follow upstream, unpackaged software) and a ~/bin folder that's also in a mercurial repo (a few shell scripts for toggling vga/internal displays for my laptop and some similar small utilities).
Now, "manually" symlinking your dot-files probably isn't the best idea -- the main reason I do it this way, is that I've had to manage my profile across different distributions (and for a time also on Solaris) -- and then just keeping home in version control can be a little to simplistic (now with mercurial/git I suppose using named branches for the various machines might be a viable option though -- not sure if I want a check-out command in my .bashrc/.xsession though -- too much can go wrong... eg if git/mercurial for some reason isn't available won't run without errors...).
I've been thinking about setting up an Ansible script, I've never used it before though. How would this work on a new machine? Is it something you run post-OS install? I want to try it out with Arch Linux.