Preheat oven to 350 degrees F (175 degrees C). Spray 2 9-inch round cake pans with cooking spray, and set aside.
Spread 2 cups of flaked coconut onto a baking sheet, and toast in the preheated oven, stirring often, until lightly browned and fragrant, 8 to 10 minutes. Set the toasted coconut aside.
Place the pudding mix and coconut milk in the work bowl of an electric mixer, and mix on Low speed until thoroughly combined, about 1 minute. Add the cake mix, yogurt, vegetable oil, eggs, and remaining 1/2 cup flaked coconut and mix on Medium speed until the batter is smooth, about 2 minutes. Pour the batter into the prepared cake pans, smoothing the top with a spatula if necessary.
Bake in the oven until the top is lightly browned and the cake springs back when pressed gently, about 40 minutes. Let the cakes cool in the pans for 20 minutes before removing to a wire rack to finish cooling.
To make frosting, place the cream cheese into the work bowl of an electric mixer and beat on Low speed until the cream cheese is softened, about 30 seconds. Beat in the confectioners' sugar, milk, and vanilla extract, and beat on Medium speed until the frosting is thick and fluffy, about 2 minutes.
Spread the cream cheese frosting over the top of one of cooled cake rounds, place the second cake round on top of the frosted round and spread the remaining frosting evenly over the layered cake. Press the toasted coconut gently into the top and sides of the cake.