You may directly render a new view component from the Nop.Web/Views/Home/Index.cshtml page as:
@await Component.InvokeAsync("HomePageNewProducts")
Create a class named "HomePageNewProducts" and inherit the abstract class "NopViewComponent". Create a method named invoke() which return "IViewComponentResult" and pull the new products from product service.
SearchProducts(storeId: _storeContext.CurrentStore.Id,
visibleIndividuallyOnly: true,
markedAsNewOnly: true,
orderBy: ProductSortingEnum.[orderby],
pageSize: numberofProducts);
Convert the product into appropriate view model and return an appropriate view from the invoke() method. You can refer to the NewProduct() method of Product controller and its view NewProducts.cshtml.
If you want to use a plugin then it can be achieved via a widget plugin. I have written a brief summary of the widget plugin
here. You can follow the approach to create the widget plugin. For the widget zones, you could select any of the widget zone available on the homepage like "PublicWidgetZones.HomepageTop" or "PublicWidgetZones.HomepageBeforeBestSellers" or "PublicWidgetZones.HomepageBeforePoll" or any other widget zone available in the Nop.Web/Views/Home/Index.cshtml.
In your Plugin's view component's invoke method, you can follow the same mechanism mentioned above.