Despite their relative simplicity I've found it quite difficult to find a straightforward guide to copulas besides this [short blog post][1]. I went back through your code, fixed it up a bit and annotated *what* the steps were doing, but not *why*, as best I could if it should be of any use to others just starting out.

Update: After a bit more research I found [this pdf][2], section 5 / pg 18 of which outlines pseudo code for a number of different copulas. 



    #a tcopula using rho = 0.8
    #done from first principles
    require(mvtnorm)
    numObs <- 10000
    #NX2 shaped matrix
    initialObservations <- rmvnorm(numObs,mean=rep(0,2))
    
    #this is a 2X2 symmetric matrix based off of rho=0.8 and is positive definite
    psdRhoMatrix <- matrix(c(1,0.8,0.8,1),2,2)
    #the transpose of the cholesky decomposition of the psdRhoMatrix
    #which gives us a lower triangle matrix for some particular reason
    lowerTriangleCholesky <- chol(psdRhoMatrix)
    
    #this lower triangle matrix (for whatever reason) is able to make
    #the observations in each column correlated
    # NX2 = NX2 %*% 2X2
    correlatedObservations <- initialObservations %*% lowerTriangleCholesky
    
    degreesOfFreedom <- 2
    #the meaning of this step eludes me, it's a vector of random chi-square observations.
    #Maybe something to do with applying the inverse CDF.
    randomChiSqrStep <- degreesOfFreedom/rchisq(numObs,degreesOfFreedom)
    #transforming the correlated variables
    #the random chiSquaredStep is applied to each column of the correlatedObservations
    #for element wise multiplication to be properly applied the data needs to be
    #sorted into columns rather than rows. NX2 = NX1 * NX2
    penultimateTransformation <- sqrt(randomChiSqrStep) *  correlatedObservations
    plot(penultimateTransformation[,1],penultimateTransformation[,2])
    
    #run the fully transformed and correlated observations through the t-dist PDF and that's it
    tCopulaOutPut <- pt(penultimateTransformation,degreesOfFreedom)
    plot(tcopulaOutPut[,1],tcopulaOutPut[,2])


  [1]: http://www.r-bloggers.com/copulas-made-easy/
  [2]: https://www.tu-chemnitz.de/mathematik/fima/publikationen/TSchmidt_Copulas.pdf