I'm not sure how /usr/obj got populated... is it safe to delete this directory. I presume it gets created by running make buildworld...
/usr/obj is left around so you can do partial upgrades(something you should know exactly what you are doing when attempted), and/or rebuild the kernel without having to go through a buildworld again. The updating instructions for FreeBSD recommend you manually delete this directory prior to an upgrade to avoid any possible troubles with only binaries being left around in the build dir.

From https://lists.freebsd.org/pipermail/freebsd-questions/2006-September/131705.html

So I think you may delete it if you want to.
As to how it got populated.. Simple: when you run # make buildworld (or any other target) then the source tree doesn't get touched. That's also the beauty of this (in my opinion) because for security reasons (unwanted tampering) I keep /usr/src mounted read-only all the time. So even during the build process.

The only time I briefly remount it rw is when I need to run # svn update.

Yet that also means that the generated data has to be stored somewhere else. Enter /usr/obj...